互換性マトリックス
次の表では、このセクションで前に定義したアプリケーションとドライバーの種類の互換性について説明します。
アプリケーションの種類 とバージョン |
32 ビット ODBC 2.x ドライバー |
ODBC 3.x ドライバー |
ODBC ドライバー 3.8 | ISO および Open Group 準拠ドライバー |
---|---|---|---|---|
16 ビット アプリケーション、任意のバージョン | 互換性あり | 互換性あり | 互換性あり | 互換性あり |
Pure 2.x アプリケーション | 互換性あり | 互換性あり | 互換性あり | 互換性なし[3] |
Pure 2.x の再コンパイル済みアプリケーション | 互換性あり | 互換性あり[1] | 互換性あり[1] | 互換性なし[3] |
Pure 2.x Unicode アプリケーション | 互換性あり | 互換性あり[1] | 互換性あり[1] | 互換性なし[3] |
Pure Open Group および ISO 準拠アプリケーション | 互換性なし | 互換性あり[2] | 互換性あり[2] | 互換性あり[2] |
Pure 3.0 アプリケーション | 互換性なし | 互換性あり | 互換性あり | 互換性なし[4] |
Pure 3.5 アプリケーション | 互換性なし | 互換性あり | 互換性あり | 互換性なし[4] |
Pure 3.8 (以上) アプリケーション | 互換性なし[5] | 互換性なし[5] | 互換性あり | 互換性なし[4] |
置き換えられたアプリケーション | 互換性あり | 互換性あり | 互換性あり | 互換性なし[3] |
[1] アプリケーションは、UNICODE オプション (Unicode アプリケーションの場合) で ODBC 3.5 (またはそれ以降) のヘッダーを使用して再コンパイルする必要があり、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 にリセットします。
接続ハンドルの割り当て。
接続を行う。
SQL_DRIVER_ODBC_VERの SQLGetInfo を呼び出して、ドライバーのバージョンを確認します。 ドライバーが ODBC 3.8 ドライバーの場合は、ドライバー固有の C 型を使用できます。 それ以外の場合は、ドライバー固有の C データ型を使用しないでください。
再コンパイルされた ODBC 3.x アプリケーションでは、SQL_ATTR_ODBC_VERSION の SQL_OV_ODBC3_80 を指定せずに、ドライバー固有の C 型以外の ODBC 3.8 機能を使用できることに注意してください。 これは、ODBC 3.x 機能を使用して再コンパイルされた ODBC 2.x アプリケーションに似ています。
すべてのドライバー マネージャーと互換性のあるアプリケーションでの SQLCancelHandle の使用
SQLCancelHandle 関数は、Windows 7 より前にリリースされたドライバー マネージャーではサポートされていないため、SQLCancelHandle を直接呼び出す場合、アプリケーションを古いバージョンの Windows に読み込むことはできません。 すべてのバージョンのドライバー マネージャーを操作し、新しいバージョンの Windows で SQLCancelHandle を使用するには、アプリケーションは LoadLibrary と GetProcAddress を使用して SQLCancelHandle を間接的に呼び出す必要があります。