互換性マトリックス

次の表では、このセクションで前に定義したアプリケーションとドライバーの種類の互換性について説明します。

アプリケーションの種類

とバージョン
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 を使用するには、アプリケーションは LoadLibraryGetProcAddress を使用して SQLCancelHandle を間接的に呼び出す必要があります。

参照

ODBC 3.8 の新機能