Dela via


Bokmärkestyper

Alla bokmärken i ODBC 3.x är bokmärken med variabel längd. Detta gör att en primärnyckel eller ett unikt index som är associerat med en tabell kan användas som ett bokmärke. Bokmärket kan också vara ett 32-bitarsvärde, som användes i ODBC 2.x. Om du vill ange att ett bokmärke ska användas med en markör anger ett ODBC 3.x-program SQL_ATTR_USE_BOOKMARK-instruktionsattributet till SQL_UB_VARIABLE. Ett bokmärke med variabel längd används automatiskt.

Ett program kan anropa SQLColAttribute med argumentet FieldIdentifier inställt på SQL_DESC_OCTET_LENGTH för att hämta längden på bokmärket. Eftersom ett bokmärke med variabel längd kan vara ett långt värde bör ett program inte binda till kolumn 0 om det inte använder bokmärket för många av raderna i raduppsättningen.

Bokmärken med fast längd stöds endast för bakåtkompatibilitet. Om ett ODBC 2.x-program som arbetar med en ODBC 3.x-drivrutin anropar SQLSetStmtOption för att ange SQL_USE_BOOKMARKS till SQL_UB_ON mappas den i Driver Manager till SQL_UB_VARIABLE. Ett bokmärke med variabel längd används, även om endast 32 bitar av det fylls i. Om en drivrutin stöder bokmärken med fast längd stöder den bokmärken med variabel längd. Om ett ODBC 3.x-program som arbetar med en ODBC 2.x-drivrutinanropar SQLSetStmtAttr för att ange SQL_ATTR_USE_BOOKMARKS till SQL_UB_VARIABLE mappas det i Driver Manager till SQL_UB_ON och ett bokmärke med 32 bitars fast längd används. SQL_ATTR_FETCH_BOOKMARK_PTR-instruktionsattributet måste sedan peka på ett 32-bitars bokmärke. Om bokmärkena som används är längre än 32 bitar, till exempel när primära nycklar används som bokmärken, måste markören mappa de faktiska värdena till 32-bitarsvärden. Det kan till exempel skapa en hash-tabell med dem. När ett ODBC 3.x-program som arbetar med en ODBC 2.x-drivrutin binder ett bokmärke måste buffertlängden vara 4.