Teilen über


Textmarkentypen

Alle Lesezeichen in ODBC 3.x sind Textmarken mit variabler Länge. Dadurch kann ein Primärschlüssel oder ein eindeutiger Index, der einer Tabelle zugeordnet ist, als Textmarke verwendet werden. Die Textmarke kann auch ein 32-Bit-Wert sein, wie in ODBC 2.x verwendet wurde. Um anzugeben, dass eine Textmarke mit einem Cursor verwendet wird, legt eine ODBC 3.x-Anwendung das attribut der SQL_ATTR_USE_BOOKMARK-Anweisung auf SQL_UB_VARIABLE fest. Eine Textmarke mit variabler Länge wird automatisch verwendet.

Eine Anwendung kann SQLColAttribute aufrufen, wobei das FieldIdentifier-Argument auf SQL_DESC_OCTET_LENGTH festgelegt ist, um die Länge der Textmarke abzurufen. Da eine Textmarke mit variabler Länge ein langer Wert sein kann, sollte eine Anwendung nicht an Spalte 0 gebunden werden, es sei denn, sie verwendet die Textmarke für viele Zeilen im Rowset.

Textmarken mit fester Länge werden nur aus Gründen der Abwärtskompatibilität unterstützt. Wenn eine ODBC 2.x-Anwendung, die mit einem ODBC 3.x-Treiberarbeitet, SQLSetStmtOption aufruft, um SQL_USE_BOOKMARKS auf SQL_UB_ON festzulegen, wird sie im Treiber-Manager SQL_UB_VARIABLE zugeordnet. Es wird eine Textmarke mit variabler Länge verwendet, auch wenn nur 32 Bit davon aufgefüllt werden. Wenn ein Treiber Textmarken mit fester Länge unterstützt, unterstützt er Textmarken mit variabler Länge. Wenn eine ODBC 3.x-Anwendung, die mit einem ODBC 2.x-Treiberarbeitet, SQLSetStmtAttr aufruft, um SQL_ATTR_USE_BOOKMARKS auf SQL_UB_VARIABLE festzulegen, wird sie im Treiber-Manager SQL_UB_ON zugeordnet und eine 32-Bit-Textmarke mit fester Länge verwendet. Das attribut der SQL_ATTR_FETCH_BOOKMARK_PTR-Anweisung muss dann auf eine 32-Bit-Textmarke zeigen. Wenn die verwendeten Lesezeichen länger als 32 Bit sind, z. B. wenn Primärschlüssel als Lesezeichen verwendet werden, muss der Cursor die tatsächlichen Werte 32-Bit-Werten zuordnen. Sie könnte z. B. eine Hashtabelle erstellen. Wenn eine ODBC 3.x-Anwendung, die mit einem ODBC 2.x-Treiber arbeitet, eine Textmarke bindet, muss die Pufferlänge 4 sein.