下表說明本節先前定義的應用程式類型與驅動程式的相容性。
| 應用程式類型 以及版本 |
32 位元 ODBC 2.x 驅動程式 |
ODBC 3.x driver |
ODBC 3.8 驅動程式 | ISO 與 Open Group 相容驅動程式 |
|---|---|---|---|---|
| 16 位元應用程式,任一版本 | 能共處的 | 能共處的 | 能共處的 | 能共處的 |
| 純 2.x 應用程式 | 能共處的 | 能共處的 | 能共處的 | 不相容[3] |
| 純粹的 2.x 應用程式重新編譯 | 能共處的 | 相容[1] | 相容[1] | 不相容[3] |
| Pure 2.x Unicode 應用程式 | 能共處的 | 相容[1] | 相容[1] | 不相容[3] |
| 純開放組及符合 ISO 標準的應用 | 不相容 | 相容[2] | 相容[2] | 相容[2] |
| 純 3.0 應用 | 不相容 | 能共處的 | 能共處的 | 不相容[4] |
| 純 3.5 應用 | 不相容 | 能共處的 | 能共處的 | 不相容[4] |
| Pure 3.8(或更高版本)的應用程式 | 不相容 [5] | 不相容 [5] | 能共處的 | 不相容 [4] |
| 替換申請 | 能共處的 | 能共處的 | 能共處的 | 不相容[3] |
[1] 應用程式必須使用 ODBC 3.5(或更高版本)標頭檔並啟用 UNICODE 選項(若是 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 驅動程式中沒有的功能,例如驅動程式專屬 的 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 查詢SQL_DRIVER_ODBC_VER以確認驅動程式版本。 如果驅動程式是 ODBC 3.8 驅動,你可以使用驅動程式專屬的 C 類型。 否則,請勿使用驅動程式專屬的 C 資料型別。
請注意,重新編譯的 ODBC 3.x 應用程式可以使用 ODBC 3.8 的功能(不包括驅動程式專屬的 C 類型),而無需為 SQL_ATTR_ODBC_VERSION 指定 SQL_OV_ODBC3_80。 這類似於重新編譯的 ODBC 2.x 應用程式,使用 ODBC 3.x 的功能。
在與所有驅動管理員相容的應用程式中使用 SQLCancelHandle
由於 SQLCancelHandle 函 式在 Windows 7 之前發布的驅動程式管理器中不被支援,若應用程式直接呼叫 SQLCancelHandle ,則無法在舊版本的 Windows 中載入。 若要支援所有版本的驅動管理員並在新版本的 Windows 上使用 SQLCancelHandle,應用程式應透過 LoadLibrary 和 GetProcAddress 間接呼叫 SQLCancelHandle。