次の方法で共有


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 名で使用されている場合に発生する可能性があります)、変換できなかった文字は、システムによって提供される既定の文字で表されます。