次の方法で共有


互換性マトリックス

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

アプリケーションの種類

およびバージョン
32 ビット ODBC

2.x ドライバー
ODBC 3.x

driver
ODBC 3.8 ドライバー ISO および Open Group 準拠ドライバー
16 ビット アプリケーション、任意のバージョン コンパチ コンパチ コンパチ コンパチ
純粋な 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 の新機能