リリース情報


|40.9 付録 C. DB2 CLI および ODBC

|以下の新しいセクションがこの付録に追加されました。

|40.9.1 ODBC ユニコード・アプリケーション

| |

|ユニコード ODBC アプリケーションは、主に UCS-2 で文字を検索します。これ |は、ODBC 関数のユニコード・バージョン (接尾部「W」を持つもの) を呼び出して |ユニコード・データ・タイプを指定するという方法で行われます。アプリケーションはローカル・コード・ページを明示的に |指定しません。それでもアプリケーションは ANSI 関数を呼び出し、ローカル・コード・ページ・ |ストリングを渡すことができます。

|たとえば、アプリケーションは SQLConnectW() を呼び出し、DSN、ユーザー ID、および |パスワードをユニコード引き数として渡すことができます。次にアプリケーションは、 |SQLExecDirectW() を呼び出し、ユニコード SQL ステートメント・ストリングを渡し、 |ANSI ローカル・コード・ページ・バッファー (SQL_C_CHAR) およびユニコード・ |バッファー (SQL_C_WCHAR) の組み合わせをバインドします。データベース・データ・ |タイプはローカル・コード・ページ、または UCS-2 と UTF-8 になります。

|CLI アプリケーションが SQLConnectW を呼び出すか、または SQL_ATTR_ANSI_APP を SQL_AA_FALSE に |設定して SQLSetConnectAttr を呼び出す場合、アプリケーションはユニコード・アプリケーションと |見なされます。このことは、CHAR データはすべて、データベースとの間で UTF-8 形式で |送受信されることを意味しています。アプリケーションはこの後 CHAR データを、 |SQL_C_CHAR バッファーにローカル・コード・ページで取り出すか (データ損失の可能性があります)、 |または SQL_C_WCHAR バッファーに UCS-2 でデータを損失することなく取り出すことが |できます。

|アプリケーションが上述した 2 種類の呼び出しのどちらも行わない場合は、CHAR データはサーバー上で |アプリケーション・ローカル・コード・ページに変換されます。このことは、 |SQL_C_WCHAR に取り出された CHAR データがデータ損失を被る可能性があることを |意味しています。

|DB2CODEPAGE インスタンス変数が (db2set を使用して) コード・ページ 1208 (UTF-8) に |設定された場合、アプリケーションはすべての CHAR データを UTF-8 で受け取ります。 |これは、UTF-8 がローカル・コード・ページになっているためです。アプリケーションはまた、 |CHAR 入力データもすべて UTF-8 であることを確認する必要もあります。ODBC は、 |SQL_C_WCHAR データがすべてネイティブ・エンディアン形式であると想定します。CLI は、 |SQL_C_WCHAR について必要なバイト反転を実行します。

|40.9.1.1 ODBC ユニコードと非ユニコード・アプリケーション

|このリリースの DB2 ユニバーサル・データベースには SQLConnectW() API が含まれています。 |ユニコード・ドライバーは、ドライバー・マネージャーにユニコード・ドライバーとして |認識されるように、SQLConnectW をエクスポートする必要があります。 |多くの ODBC アプリケーション (Microsoft Access や Visual Basic など) は SQLConnectW() を |呼び出すことに注意してください。DB2 ユニバーサル・データベースの前のリリースでは、 |DB2 CLI はこの API をサポートしていなかったので、ODBC ドライバー・マネージャーは |これをユニコード・ドライバーとして認識しませんでした。 |このため、ODBC ドライバー・マネージャーはすべてのユニコード・データをアプリケーションの |ローカル・コード・ページに変換していました。SQLConnectW() 関数のサポートが追加された |ことで、これらのアプリケーションはユニコード・アプリケーションに接続し、DB2 CLI が |必要なデータ変換をすべて行うようになりました。

|DB2 CLI は現在、ユニコード API (接尾部 "W" が付きます) を受け入れます。 |ODBC は接尾部 "A" の関数のセットを定義しますが、ドライバー・マネージャーは |接尾部 "A" の ANSI 関数をドライバーに渡しません。代わりに、これらの関数を ANSI 関数 |呼び出しに変換し、ドライバーに渡します。

|SQLConnectW() API を呼び出す ODBC アプリケーションは、ユニコード・アプリケーションと |見なされます。ODBC ドライバー・マネージャーは呼び出されるアプリケーションのバージョンに |かかわらず常に SQLConnectW() API を呼び出すため、SQL_ATTR_ANSI_APP 接続属性を使用して、 |アプリケーションが ANSI か UNICODE のどちらと考えられるかをドライバーに通知します。 |SQL_ATTR_ANSI_APP が SQL_AA_FALSE に設定されていない場合、DB2 CLI はすべての |ユニコード・データを、サーバーに送る前にローカル・コード・ページに変換します。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]