次の方法で共有


Unicode データ

SQL Unicode データ型は、DBMS 上の Unicode にネイティブに存在するデータを記述するために提供されます。 アプリケーションが Unicode バッファーにデータをバインドできるように、C Unicode データ型が用意されています。 ドライバー マネージャーは、Unicode C 型 (SQL_C_WCHAR) からデータを変換して、ANSI ドライバーで機能させることができます。

ODBC 3.0 または 2.x アプリケーションは常に ANSI データ型にバインドされます。 最適なパフォーマンスを得るため、ODBC 3.5 (以降) アプリケーションは、SQL 列の型が ANSI の場合は ANSI データ C 型にバインドし、SQL 列の型が Unicode の場合は Unicode C データ型にバインドする必要があります。

SQL Unicode 型インジケーターは、SQL_WCHAR、SQL_WVARCHAR、および SQL_WLONGVARCHAR です。 データ SQL_WCHAR 文字列の長さは固定されていますが、SQL_WVARCHAR には宣言された最大値を持つ可変長があり、SQL_WLONGVARCHAR にはデータ ソースに依存する最大の可変長があります。

C Unicode 型インジケーターは SQL_C_WCHAR です。 これは、各 SQL Unicode 型インジケーターの既定値です。 すべての SQL 型は SQL_C_WCHAR に変換でき、SQL_C_WCHAR はすべての SQL 型に変換できます。 アプリケーションは、次の 3 つの方法のいずれかでデータを取得できます。

  • SQL_C_CHAR としてデータを取得します。

  • SQL_C_WCHAR としてデータを取得します。

  • データを SQL_C_TCHAR として宣言します。 これは、アプリケーションが Unicode アプリケーションとしてコンパイルされた場合に SQL_C_WCHAR を挿入するマクロ、または ANSI アプリケーションとしてコンパイルされた場合に SQL_C_CHAR を挿入するマクロです。

SQL_C_TCHAR は、次のように関数で宣言されます。

SQLBindParameter(StatementHandle, 1, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_WCHAR, NameLen, 0, Name, 0, &Name)  

アプリケーションを Unicode アプリケーションとしてコンパイルすると、ValueType 引数が SQL_C_TCHAR から SQL_C_WCHAR に変更されます。 アプリケーションを ANSI アプリケーションとしてコンパイルすると、ValueType 引数が SQL_C_CHAR に変更されます。

Unicode ドライバーでは、SQL_CHAR を含む ANSI データ型を引き続きサポートする必要があります。 Unicode ドライバーを使用するアプリケーションが SQL_CHAR にバインドされている場合、ドライバー マネージャーは SQL_CHAR データを SQL_WCHAR にマップしません。 Unicode ドライバーは、SQL_CHAR データを受け入れる必要があります。

ドライバー マネージャーは、ドライバーと DSN の名前を Unicode に格納し、必要に応じて ANSI にマップします。 Unicode 文字を ANSI 文字にマップできない場合 (コンピューターのネイティブ コード ページではないコード ページの文字がドライバー名と DSN 名で使用されている場合に発生する可能性がある)、変換できなかった文字は、システムによって提供される既定の文字で表されます。