Deklarieren der ODBC-Version der Anwendung

Bevor eine Anwendung eine Verbindung zuweist, muss sie das Umgebungsattribut SQL_ATTR_ODBC_VERSION setzen. Dieses Attribut gibt an, dass die Anwendung bei Verwendung der folgenden Elemente die ODBC 2.x- oder ODBC 3.x-Spezifikation befolgt:

  • SQLSTATEs. Viele SQLSTATE-Werte unterscheiden sich in ODBC 2.x und ODBC 3.x.

  • Bezeichner für Datums-, Uhrzeit- und Zeitstempeltypen. In der folgenden Tabelle sind die Typbezeichner für Datums-, Uhrzeit- und Zeitstempeldaten in ODBC 2.x und ODBC 3.x aufgeführt.

    ODBC 2.x ODBC 3.x
    SQL-Typenbezeichner
    SQL_DATE SQL_TYPE_DATE
    SQL_TIME SQL_TYPE_TIME
    SQL_TIMESTAMP SQL_TYPE_TIMESTAMP
    C-Typenbezeichner
    SQL_C_DATE SQL_C_TYPE_DATE
    SQL_C_TIME SQL_C_TYPE_TIME
    SQL_C_TIMESTAMP SQL_C_TYPE_TIMESTAMP
  • CatalogName Argumente in SQLTables. In ODBC 2.x werden die Platzhalterzeichen („%“ und „_“) im Argument CatalogName buchstäblich behandelt. In ODBC 3.x werden sie als Platzhalterzeichen behandelt. Daher kann eine Anwendung, die die ODBC 2.x-Spezifikation befolgt, diese Zeichen nicht als Platzhalter verwenden und entschlüsselt sie nicht, wenn sie als Literale verwendet werden. Eine Anwendung, die sich an die ODBC 3.x-Spezifikation hält, kann diese Zeichen als Platzhalter verwenden oder sie entschlüsseln und als Literale verwenden. Weitere Informationen finden Sie unter Argumente in Katalogfunktionen.

Der ODBC 3.x-Treiber-Manager und ODBC 3.x-Treiber überprüfen die Version der ODBC-Spezifikation, auf die eine Anwendung geschrieben und entsprechend reagiert. Wenn die Anwendung beispielsweise der ODBC 2.x-Spezifikation folgt und SQLExecute aufruft, bevor SQLPrepare aufgerufen wird, gibt der ODBC 3.x-Treiber-Manager SQLSTATE S1010 (Funktionssequenzfehler) zurück. Wenn die Anwendung der ODBC 3.x-Spezifikation folgt, gibt der Treiber-Manager SQLSTATE HY010 (Funktionssequenzfehler) zurück. Weitere Informationen finden Sie unter Abwärtskompatibilität und Standardkonformität.

Wichtig

Anwendungen, die der ODBC 3.x-Spezifikation folgen, müssen bedingten Code verwenden, um beim Arbeiten mit ODBC 2.x-Treibern keine neuen Funktionen für ODBC 3.x zu verwenden. ODBC 2.x-Treiber unterstützen keine neuen Funktionen für ODBC 3.x, nur weil die Anwendung deklariert, dass sie der ODBC 3.x-Spezifikation folgt. Darüber hinaus unterstützen ODBC 3.x-Treiber keine neuen Funktionen für ODBC 3.x, nur weil die Anwendung deklariert, dass sie der ODBC 2.x-Spezifikation folgt.