Sdílet prostřednictvím


Změny chování

Změny chování jsou změny, pro které syntaxe rozhraní zůstává stejná, ale sémantika se změnila. U těchto změn funkce používané v rozhraní ODBC 2. X se chová jinak než stejné funkce v rozhraní ODBC 3. x.

Zda aplikace vykazuje chování ODBC 2.x nebo ODBC 3.x je určeno atributem prostředí SQL_ATTR_ODBC_VERSION. Tato 32bitová hodnota je nastavena na SQL_OV_ODBC2 pro zajištění chování ODBC 2.x a na SQL_OV_ODBC3 pro zajištění chování ODBC 3.x.

Atribut prostředí SQL_ATTR_ODBC_VERSION je nastaven voláním SQLSetEnvAttr. Jakmile aplikace zavolá SQLAllocHandle k přidělení handle prostředí, musí okamžitě zavolat SQLSetEnvAttr a nastavit chování, které vykazuje. (V důsledku toho existuje nový stav prostředí, který popisuje popisovač prostředí v přiděleném stavu bez verzí.) Další informace naleznete v dodatku B: Tabulky přechodu stavu ODBC.

Aplikace uvádí, jaké chování vykazuje s atributem prostředí SQL_ATTR_ODBC_VERSION, ale atribut nemá žádný vliv na připojení aplikace k rozhraní ODBC 2. x nebo ODBC 3. x ovladač. Aplikace ODBC 3.x se může připojit k ovladači ODBC 2.x nebo 3.x, bez ohledu na nastavení atributu prostředí.

ODBC 3. Aplikace x by nikdy neměly volat SQLAllocEnv. V důsledku toho, pokud Správce ovladačů obdrží volání SQLAllocEnv, rozpozná aplikaci jako ODBC 2. x aplikace.

Atribut SQL_ATTR_ODBC_VERSION ovlivňuje tři různé aspekty rozhraní ODBC 3. Chování řidiče x :

  • SQLSTATEs

  • Datové typy pro datum, čas a časové razítko

  • Argument CatalogName v tabulkách SQLTables přijímá vyhledávací vzory v rozhraní ODBC 3. x, ale ne v rozhraní ODBC 2. x

Nastavení atributu prostředí SQL_ATTR_ODBC_VERSION nemá vliv na SQLSetParam nebo SQLBindParam. Tento bit nemá vliv také na SQLColAttribute. Přestože sqlColAttribute vrací atributy, které jsou ovlivněny verzí ODBC (typ data, přesnost, měřítko a délka), zamýšlené chování je určeno hodnotou Argumentu FieldIdentifier . Pokud je FieldIdentifier roven SQL_DESC_TYPE, SQLColAttribute vrátí ODBC 3.x kódy pro datum, čas a časové razítko; když je FieldIdentifier roven SQL_COLUMN_TYPE, SQLColAttribute vrátí ODBC 2.x kódy pro datum, čas a časové razítko.

Tato část obsahuje následující témata.