宣告應用程式的 ODBC 版本

應用程式配置連線之前,必須先設定 SQL_ATTR_ODBC_VERSION 環境屬性。 這項屬性表示應用程式在使用下列項目時,符合 ODBC 2.x 或 ODBC 3.x 規格:

  • SQLSTATEs。 許多 SQLSTATE 的值在 ODBC 2.x 和 ODBC 3.x 中不同。

  • 日期、時間和時間戳記型別識別碼。 下表顯示 ODBC 2.x 和 ODBC 3.x 內日期、時間和時間戳記資料的型別識別碼。

    ODBC 2.x ODBC 3.x
    SQL 類型識別碼
    SQL_DATE SQL_TYPE_DATE
    SQL_TIME SQL_TYPE_TIME
    SQL_TIMESTAMP SQL_TYPE_TIMESTAMP
    C 類型識別碼
    SQL_C_DATE SQL_C_TYPE_DATE
    SQL_C_TIME SQL_C_TYPE_TIME
    SQL_C_TIMESTAMP SQL_C_TYPE_TIMESTAMP
  • CatalogName SQLTables 內的引數。 在 ODBC 2.x 中,CatalogName 引數內的萬用字元 (「%」和「_」) 會被視為常值。 在 ODBC 3.x 中,系統則會視其為萬用字元。 因此,遵循 ODBC 2.x 規格的應用程式無法以之作為萬用字元,且做為常值使用時無法予以逸出。 遵循 ODBC 3.x 規格的應用程式可以之作為萬用字元,也可將其逸出以做為常值使用。 如需詳細資訊,請參閱目錄函式中的引數

ODBC 3.x 驅動程式管理員和 ODBC 3.x 驅動程式會檢查 ODBC 規格的版本,應用程式即是根據該版本撰寫並回應。 例如,假使應用程式遵循 ODBC 2.x 規格並在呼叫 SQLPrepare 前率先呼叫 SQLExecute,則 ODBC 3.x 驅動程式管理員會傳回 SQLSTATE S1010 (函式序列錯誤)。 假使應用程式遵循 ODBC 3.x 規格,則驅動程式管理員會傳回 SQLSTATE HY010 (函式序列錯誤)。 如需詳細資訊,請參閱回溯相容性和標準合規性

重要

遵循 ODBC 3.x 規格的應用程式必須使用條件碼,以避免在與 ODBC 2.x 驅動程式搭配使用時,用到 ODBC 3.x 沒有的功能。 ODBC 2.x 驅動程式不支援 ODBC 3.x 沒有的功能,因為應用程式宣告其遵循 ODBC 3.x 規格。 此外,ODBC 3.x 驅動程式會持續支援 ODBC 3.x 沒有的功能,因為應用程式宣告其遵循 ODBC 2.x 規格。