Verhaltensänderungen
Verhaltensänderungen sind diese Änderungen, für die sich die Syntax der Schnittstelle ändert Standard die gleiche, aber die Semantik hat sich geändert. Für diese Änderungen wird die in ODBC 2 verwendete Funktionalität verwendet.x verhält sich anders als die gleiche Funktionalität in ODBC 3.x.
Gibt an, ob eine Anwendung ODBC 2 aufweist.x-Verhalten oder ODBC 3.x-Verhalten wird durch das SQL_ATTR_ODBC_VERSION Umgebungsattribut bestimmt. Dieser 32-Bit-Wert wird auf SQL_OV_ODBC2 festgelegt, um ODBC 2 anzuzeigen.x-Verhalten und SQL_OV_ODBC3, um ODBC 3 anzuzeigen.x-Verhalten .
Das SQL_ATTR_ODBC_VERSION Umgebungsattribut wird durch einen Aufruf von SQLSetEnvAttr festgelegt. Nachdem eine Anwendung SQLAllocHandle aufgerufen hat, um ein Umgebungshandle zuzuweisen, muss sqlSetEnvAttr sofort aufgerufenwerden, um das angezeigte Verhalten festzulegen. (Daher gibt es einen neuen Umgebungszustand, um den Umgebungshandle in einem zugewiesenen, aber versionslosen Zustand zu beschreiben.) Weitere Informationen finden Sie in Anhang B: ODBC-Zustandsübergangstabellen.
Eine Anwendung gibt an, welches Verhalten sie mit dem Attribut SQL_ATTR_ODBC_VERSION Umgebung aufweist, aber das Attribut hat keine Auswirkungen auf die Verbindung der Anwendung mit einem ODBC 2.x oder ODBC 3.x-Treiber . ODBC 3.x-Anwendung kann eine Verbindung mit einem ODBC 2 herstellen.x oder 3.x-Treiber , unabhängig von der Einstellung des Umgebungsattributs.
ODBC 3.x-Anwendungen sollten nie SQLAllocEnv aufrufen. Wenn der Treiber-Manager daher einen Aufruf von SQLAllocEnv empfängt, erkennt er die Anwendung als ODBC 2.x-Anwendung .
Das SQL_ATTR_ODBC_VERSION-Attribut wirkt sich auf drei verschiedene Aspekte eines ODBC 3 aus.x-Treiberverhalten :
SQLSTATEs
Datentypen für Datum, Uhrzeit und Zeitstempel
Das Argument CatalogName in SQLTables akzeptiert Suchmuster in ODBC 3.x, aber nicht in ODBC 2.X
Die Einstellung des SQL_ATTR_ODBC_VERSION Umgebungsattributs wirkt sich nicht auf SQLSetParam oder SQLBindParam aus. SQLColAttribute ist auch von diesem Bit nicht betroffen. Obwohl SQLColAttribute Attribute zurückgibt, die von der Version von ODBC betroffen sind (Datumstyp, Genauigkeit, Skalierung und Länge), wird das beabsichtigte Verhalten durch den Wert des FieldIdentifier-Arguments bestimmt. Wenn FieldIdentifier gleich SQL_DESC_TYPE ist, gibt SQLColAttribute den ODBC 3 zurück.X-Codes für Datum, Uhrzeit und Zeitstempel; wenn FieldIdentifier SQL_COLUMN_TYPE ist, gibt SQLColAttribute den ODBC 2 zurück.x-Codes für Datum, Uhrzeit und Zeitstempel.
In diesem Abschnitt werden die folgenden Themen behandelt: