相容性矩陣
下表說明本節先前所定義應用程式和驅動程式類型的相容性。
應用程式類型 和版本 |
32 位元 ODBC 2.x 驅動程式 |
ODBC 3.x 驅動程式 |
ODBC 3.8 驅動程式 | 符合 ISO 和 Open Group 規範的驅動程式 |
---|---|---|---|---|
16 位元應用程式 (任何版本) | 相容 | 相容 | 相容 | 相容 |
純 2.x 應用程式 | 相容 | 相容 | 相容 | 不相容[3] |
純 2.x 重新編譯應用程式 | 相容 | 相容[1] | 相容[1] | 不相容[3] |
純 2.x Unicode 應用程式 | 相容 | 相容[1] | 相容[1] | 不相容[3] |
純 Open Group 和 ISO 合規應用程式 | 不相容 | 相容[2] | 相容[2] | 相容[2] |
純 3.0 應用程式 | 不相容 | 相容 | 相容 | 不相容[4] |
純 3.5 應用程式 | 不相容 | 相容 | 相容 | 不相容[4] |
純 3.8 (或更新版本) 應用程式 | 不相容 [5] | 不相容 [5] | 相容 | 不相容 [4] |
已淘汰的應用程式 | 相容 | 相容 | 相容 | 不相容[3] |
[1] 應用程式必須搭配 UNICODE 選項,使用 ODBC 3.5 (或更新版本) 標頭重新編譯 (如果是 Unicode 應用程式),且必須將 ODBCVER 設定為 0x0250。
[2] 應用程式必須使用 ODBC 3.5 (或更高版本) 標頭進行編譯,以及透過 ODBC 驅動程式管理員連結。 其也必須設定標頭旗標 ODBC_STD。
[3] 此組態可能無法運作,因為 ODBC 2.x 中的功能不在標準中,例如書籤。
[4] 此組態可能無法運作,因為 ODBC 3.x 中的功能不在標準中,例如書籤。
[5] 此組態可能會失敗,因為 ODBC 3.8 中的功能不在 ODBC 2.x 或 3.x 驅動程式中,例如 ODBC 中的驅動程式專屬 C 資料類型。
驅動程式管理員相容性
必須與所有驅動程式管理員版本搭配運作的 ODBC 3.0 應用程式應該在啟動時執行下列動作:
配置環境控制代碼。
將 SQL_ATTR_ODBC_VERSION 環境屬性設定為 SQL_OV_ODBC3_80。 如果驅動程式管理員傳回 SQL_ERROR,則驅動程式管理員版本低於 3.8。 視需要將 SQL_ATTR_ODBC_VERSION 重設為 SQL_OV_ODBC3 或 SQL_OV_ODBC2,以對應至驅動程式管理員。
配置連線控制代碼。
建立連線。
呼叫 SQLGetInfo for SQL_DRIVER_ODBC_VER 以判斷驅動程式版本。 如果驅動程式是 ODBC 3.8 驅動程式,您可以使用驅動程式專屬的 C 類型。 否則,請勿使用驅動程式專屬的 C 資料類型。
請注意,重新編譯的 ODBC 3.x 應用程式可以使用驅動程式專屬 C 類型以外的 ODBC 3.8 功能,而不需為 SQL_ATTR_ODBC_VERSION 指定 SQL_OV_ODBC3_80。 這類似於使用 ODBC 3.x 功能的重新編譯 ODBC 2.x 應用程式。
在與所有驅動程式管理員相容的應用程式中使用 SQLCancelHandle
由於 Windows 7 之前發行的驅動程式管理員不支援 SQLCancelHandle 函式,因此如果應用程式直接呼叫 SQLCancelHandle,就無法在舊版 Windows 中載入應用程式。 若要使用驅動程式管理員的所有版本,並在新版本的 Windows 上使用 SQLCancelHandle,應用程式應該使用 LoadLibrary 和 GetProcAddress 間接呼叫 SQLCancelHandle。