Condividi tramite


Tipi di segnalibro

Tutti i segnalibri in ODBC 3.x sono segnalibri a lunghezza variabile. In questo modo è possibile usare una chiave primaria o un indice univoco associato a una tabella come segnalibro. Il segnalibro può anche essere un valore a 32 bit, come è stato usato in ODBC 2.x. Per specificare che un segnalibro viene utilizzato con un cursore, un'applicazione ODBC 3.x imposta l'attributo di istruzione SQL_ATTR_USE_BOOKMARK su SQL_UB_VARIABLE. Viene usato automaticamente un segnalibro a lunghezza variabile.

Un'applicazione può chiamare SQLColAttribute con l'argomento FieldIdentifier impostato su SQL_DESC_OCTET_LENGTH per ottenere la lunghezza del segnalibro. Poiché un segnalibro a lunghezza variabile può essere un valore lungo, un'applicazione non deve essere associata alla colonna 0 a meno che non userà il segnalibro per molte delle righe nel set di righe.

I segnalibri a lunghezza fissa sono supportati solo per la compatibilità con le versioni precedenti. Se un'applicazione ODBC 2.x che utilizza un driver ODBC 3.x chiama SQLSetStmtOption per impostare SQL_USE_BOOKMARKS su SQL_UB_ON, viene eseguito il mapping in Gestione driver a SQL_UB_VARIABLE. Viene usato un segnalibro a lunghezza variabile, anche se vengono popolati solo 32 bit. Se un driver supporta segnalibri a lunghezza fissa, supporterà segnalibri a lunghezza variabile. Se un'applicazione ODBC 3.x che utilizza un driver ODBC 2.x chiama SQLSetStmtAttr per impostare SQL_ATTR_USE_BOOKMARKS su SQL_UB_VARIABLE, viene eseguito il mapping in Gestione driver a SQL_UB_ON e viene usato un segnalibro a lunghezza fissa a 32 bit. L'attributo dell'istruzione SQL_ATTR_FETCH_BOOKMARK_PTR deve quindi puntare a un segnalibro a 32 bit. Se i segnalibri usati sono più lunghi di 32 bit, ad esempio quando le chiavi primarie vengono usate come segnalibri, il cursore deve eseguire il mapping dei valori effettivi ai valori a 32 bit. Potrebbe, ad esempio, compilare una tabella hash di tali tabelle. Quando un'applicazione ODBC 3.x che utilizza un driver ODBC 2.x associa un segnalibro, la lunghezza del buffer deve essere 4.