リリース情報


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

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

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

| |

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

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

|CLI アプリケーションが SQL_ATTR_ANSI_APP を SQL_AA_FALSE に |設定して SQLSetConnectAttr を呼び出すか、SQL_ATTR_ANSI_APP の値を設定しないで SQLConnectW を |呼び出す場合、アプリケーションはユニコード・アプリケーションと |見なされます。これは、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 について必要なバイト反転を実行します。

|41.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_TRUE に設定されている場合、DB2 CLI はすべての |ユニコード・データを、サーバーに送る前に、ローカル・コード・ページに変換します。


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