JDBC ドライバの国際対応機能

Microsoft SQL Server 2005 JDBC Driver の国際対応機能には、次のものがあります。

  • SQL Server と同じ言語により完全にローカライズされたサービスをサポートします。

  • ロケールに依存する SQL Server データに対する Java 1.4 レベルの言語変換をサポートします。

  • オペレーティング システムに関係なく、各国の言語をサポートします。

文字データの処理

Java の文字データは、既定で Unicode として処理されます。Java String オブジェクトは Unicode 文字データを表します。 JDBC ドライバにおいてこの規則の唯一の例外となるのは、ASCII ストリームの getter メソッドと setter メソッドです。暗黙の仮定で既知のコード ページの 1 つ (ASCII) によるバイト ストリームが使用されるため、これは特殊なケースです。

また、JDBC driver ドライバには sendStringParametersAsUnicode 接続文字列プロパティが用意されています。 このプロパティを使用して、文字データに対して準備されたパラメータを Unicode ではなく ASCII で送信するように指定できます。

sendStringParametersAsUnicode 接続文字列プロパティの詳細については、「接続プロパティの設定」を参照してください。

ドライバの受信変換

サーバーから受信する Unicode テキスト データは、変換する必要はありません。 データは Unicode として直接渡されます。 サーバーから受信する Unicode 以外のデータは、データベースまたは列レベルでデータのコード ページから Unicode に変換されます。 JDBC ドライバは、Java 仮想マシン (JVM) 変換ルーチンを使用してこのような変換を実行します。 変換は、あらゆる型の文字列および文字のストリームの getter メソッドで実行されます。

JVM がデータベースのデータに対して適切なコード ページをサポートしていない場合、JDBC ドライバは、"XXX コード ページは Java 環境ではサポートされていません。" という例外をスローします。

ドライバの送信変換

ドライバからサーバーへ送信される文字データは、Unicode です。 Unicode はサーバーに渡され、変換先の列が Unicode 型 (ncharnvarcharntext) の列ではない場合は、ここで適切な変換が行われます。 この場合、Unicode テキストは文字列と文字のストリームに対する JDBC ドライバの setter メソッドと updater メソッドから渡されます。

書式設定に関する問題

日付、時刻、および通貨の場合、ローカライズされたデータのすべての書式設定は、Locale オブジェクトや、DateCalendarNumber データ型用のさまざまな書式設定メソッドを使用して、Java 言語レベルで実行されます。 JDBC ドライバがロケールに依存するデータをローカライズされた書式で渡す必要があることはまれですが、このような場合は既定の JVM ロケールを使用して適切なフォーマッタが使用されます。

Unicode 以外のパラメータ

sendStringParametersAsUnicode 接続文字列プロパティを設定することで、String パラメータを Unicode 以外の形式で SQL Server に渡し、パフォーマンスを向上させることができます。 sendStringParametersAsUnicode の既定の設定は "true" です。これは、String パラメータが Unicode として送信されることを示します。 sendStringParametersAsUnicode が "false" に設定されている場合、その接続のすべての String パラメータは、データベースの既定の照合順序でサーバーに送信されます。

参照

その他のリソース

JDBC ドライバの概要