WebLogic Type 4 JDBC ドライバ ガイド

     前  次    新しいウィンドウで目次を開く   
ここから内容の開始

DB2 ドライバ

以下の節では、DB2 用の WebLogic Type 4 JDBC ドライバのコンフィグレーション方法と使用方法について説明します。

 


データベース バージョンのサポート

DB2 用の WebLogic Type 4 JDBC ドライバ (「DB2 ドライバ」) は次のバージョンをサポートします。

注意 : このドキュメントでは、DB2 の各バージョンを以下のように表記します。

 


DB2 ドライバ クラス

WebLogic Type 4 JDBC DB2 ドライバのドライバ クラスは次のとおりです。

   XA : weblogic.jdbcx.db2.DB2DataSource
   非 XA : weblogic.jdbc.db2.DB2Driver

WebLogic Server ドメインに JDBC データ ソースをコンフィグレーションする場合に、これらのドライバ クラスを使用します。

 


DB2 URL

DB2 ドライバの接続 URL の形式は次のとおりです。

jdbc:bea:db2://hostname:port[;property=value[;...]]

各要素の説明は次のとおりです。

次に例を示します。

Linux、UNIX、Windows 上の DB2 UDB

jdbc:bea:db2://server1:50000;DatabaseName=jdbc;User=test;Password=secret

z/OS および iSeries 上の DB2 UDB

jdbc:bea:db2://server1:446;LocationName=Sample;User=test;Password=secret

 


DB2 接続プロパティ

表 3-1 では、DB2 ドライバでサポートされる JDBC 接続プロパティを示し、各プロパティについて説明します。WebLogic Server ドメインの JDBC データ ソースのコンフィグレーションでこれらの接続プロパティを使用できます。

注意 : すべての接続プロパティ名で大文字と小文字は区別されません。たとえば、Password は password と同じです。必須のプロパティかどうかが記載されています。各接続プロパティで示されているデータ型は、JDBC データ ソースのプロパティ値に使用される Java データ型です。

プロパティを指定するには、JDBC データ ソースのコンフィグレーションで次の形式を使用します。

   property=value

表 3-1 DB2 接続プロパティ 
プロパティ
説明
AddToCreateTable
省略可能
すべての CREATE 文の末尾に追加される文字列。このフィールドは主に「in database」句を追加する必要のあるユーザ用。
AllowImplicitResultSetCloseForXA
省略可能
true または false。DB2 には、結果セットのすべての行がフェッチされたときに結果セットを自動的に閉じるメカニズムがある。このメカニズムによりデータベースへのラウンド トリップ数が減少するため、アプリケーションのパフォーマンス向上が実現されている。WebLogic DB2 ドライバは、デフォルトでこのメカニズムを使用している。

注意 : このメカニズムには問題があることが確認されている。問題を回避するには、データ ソースのコンフィグレーションのプロパティに AllowImplicitResultSetCloseForXA=false を追加する必要がある。

デフォルトは true。
AlternateID
省略可能
修飾されていない SQL 識別子によって使用されるデフォルトの DB2 スキーマを、指定された値に設定する。値は有効な DB2 スキーマでなければならない。
AuthenticationMethod
kerberos、encryptedUIDPassword、encryptedPassword、clearText、または client。ドライバが接続を確立する際に使用する認証方法を指定する。
kerberos に設定すると、Kerberos 認証が使用される。ユーザ ID やパスワードを指定しても無視される。
encryptedUIDPassword に設定すると、ユーザ ID/パスワード認証が使用される。ドライバから DB2 サーバに、認証に使用する暗号化されたユーザ ID とパスワードが送信される。ユーザ ID とパスワードが指定されていない場合は、ドライバから例外が送出される。この値を設定すると、ドライバでデータを暗号化することも可能になる (詳細については EncryptionMethod プロパティを参照)。
encryptedPassword に設定すると、ユーザ ID/パスワード認証が使用される。ドライバから DB2 サーバには、認証に使用するクリア テキストのユーザ ID と暗号化されたパスワードが送信される。ユーザ ID とパスワードが指定されていない場合は、ドライバから例外が送出される。この値を設定すると、ドライバでデータを暗号化することも可能になる (詳細については EncryptionMethod プロパティを参照)。
clearText に設定すると、ユーザ ID/パスワード認証が使用される。ドライバから DB2 サーバに、認証に使用するユーザ ID とパスワードがクリア テキストで送信される。ユーザ ID とパスワードが指定されていない場合は、ドライバから例外が送出される。この値を設定すると、ドライバでデータを暗号化することも可能になる (詳細については EncryptionMethod プロパティを参照)。
client に設定すると、クライアント認証が使用される。クライアントでのみ認証が実施され、DB2 サーバによる追加の認証は提供されない。ユーザ ID やパスワードを指定しても無視される。
User プロパティはユーザ ID を提供する。Password プロパティはパスワードを提供する。
DB2 サーバでサポートされていない認証方式を指定すると、接続に失敗して例外が送出される。
デフォルトは clearText。
DB2 ドライバによる認証の使用方法については、「認証」を参照。
BatchPerformanceWorkaround
省略可能
true または false。DB2 ドライバでは、ネイティブの DB2 バッチ メカニズムが使用される。このプロパティは、データ変換を容易にするために特定の制限を行うかどうかを決定する。
  • false に設定すると、PreparedStatement を使って実行されるバッチ処理のパラメータ値の設定に使用するメソッドは、パラメータが関連付けられるカラムのデータベース データ型に一致する必要がある。これは、DB2 サーバが暗黙的なデータ変換を実行しないため。
  • true に設定すると、この制限は削除される。ただし、パラメータの設定は指定された順序で実行されない場合がある。
デフォルトは false です。
詳細については、「バッチ挿入とバッチ更新」を参照。

注意 : DB2 用の WebLogic Type 4 JDBC ドライバを使用し、JMS JDBC ストアとして使用されるデータ ソースの場合は、BatchPerformanceWorkaround プロパティを true に設定する必要がある。

CatalogIncludesSynonyms
省略可能
true または false。DatabaseMetaData.getColumns() メソッドから返される結果セットにシノニムを含めるかどうかを指定する。
true (デフォルト) に設定すると、DatabaseMetaData.getColumns() メソッドから返される結果セットにシノニムが含まれる。
false に設定すると、DatabaseMetaData.getColumns() メソッドから返される結果セットにシノニムは含まれない。
このプロパティは、Linux/UNIX/Windows 上の v8.x 以上の DB2 では無視される。Linux/UNIX/Windows 上の v8.x 以上の DB2 に接続している場合、DatabaseMetaData.getColumns() メソッドの結果セットには常にシノニムが含まれる。
このプロパティをコンフィグレーションして最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照。
デフォルトは true
CatalogSchema
省略可能
カタログ関数に使用する DB2 スキーマ。値は有効な DB2 スキーマの名前でなければならない。デフォルトは、DB2 データベースのプラットフォームによって異なる。
Linux/UNIX/Windows 上の DB2 の場合は SYSCAT
z/OS 上の DB2 の場合は SYSIBM
iSeries 上の DB2 の場合は QSYS2
パフォーマンスを向上させるため、システム カタログ テーブルのビューをデフォルト カタログ スキーマ以外のスキーマで作成できる。このプロパティにカタログ テーブルのビューを含むスキーマを指定すると、ドライバでそれらのビューを使用できる。カタログ メソッドを正しく機能させるには、特定のカタログ テーブルのビューが指定したスキーマに存在している必要がある。必要となるビューは、使用している DB2 データベースによって異なる。必要となるカタログ テーブルのビューについては、「カタログ メソッドのデフォルト以外のスキーマ」を参照。
このプロパティをコンフィグレーションして最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照。
CharsetFor65535
省略可能
CCSID 65535 で定義されている文字カラム (Char、Varchar、Longvarchar、Char for Bit Data、Varchar for Bit Data、Longvarchar for Bit Data) にビット データとして格納されている文字データの変換に使用するコード ページ。CCSID 65535 で定義されているカラムを使用してデータベースから取得したビット データとして格納されているすべての文字データは、指定したコード ページを使用して変換される。値としては、使用している JVM でサポートされている有効なコード ページの名前 (たとえば CharsetFor65535=CP950) を含む文字列を指定する必要がある。CCSID 65535 で定義されている文字カラムにデータを書き込む際は、このプロパティはまったく影響しない。
CodePageOverride
省略可能
文字データと Clob データの変換に使用するコード ページ。指定したコード ページによって、デフォルトのデータベース コード ページまたはカラム照合がオーバーライドされる。データベースとやり取り (取得および書き込み) するすべての文字データおよび Clob データは、指定したコード ページを使用して変換される。値としては、使用している JVM でサポートされている有効なコード ページの名前 (たとえば CodePageOverride=CP950) を含む文字列を指定する必要がある。
デフォルトでは、文字データの変換に使用するコード ページが自動的に識別される。このプロパティは、ドライバのデフォルト動作を変更する必要がある場合にのみ使用する。
CollectionId
非推奨
このプロパティは下位互換性を確保するため存続しているが、DB2 パッケージをバインドするコレクションまたはライブラリ (パッケージのグループ) の名前を指定する場合は、代わりに PackageCollection を使用することを推奨する。
DB2 パッケージの作成の詳細については、「DB2 パッケージの作成」を参照。
ConnectionRetryCount
省略可能
正常な接続が確立されるまでに、ドライバで接続が再試行される回数。有効な値は、0 または正の整数。
0 に設定すると、最初に接続を作成しようとしたときに正常な接続が確立されなかった場合にも、接続は再試行されない。
アプリケーションによってログイン タイムアウト値 (たとえば、DataSource.loginTimeout や DriverManager.loginTimeout) が設定されている場合は、そのタイムアウトがこのプロパティよりも優先される。たとえば、ログイン タイムアウトが経過すると、すべての接続の試行が停止する。
再試行の待機間隔は、ConnectionRetryDelay プロパティで秒単位で指定する。
デフォルトは 5。
ConnectionRetryDelay
省略可能
ConnectionRetryCount が正の整数に設定されている場合に、ドライバがそれぞれの接続の再試行の間に待機する秒数。
デフォルトは 1。
ConvertNull
1 または 0。データ変換における null 値の処理方法を制御する。
1 (デフォルト) に設定すると、要求されたデータ型とデータを格納するテーブル カラムのデータ型が照合される。要求された型とカラム型の間の変換が定義されていない場合は、カラム値のデータ型に関係なく、「unsupported data conversion」例外が生成される。
0 に設定すると、カラムの値が null の場合でもデータ型の照合は実行されない。このように設定することで、要求された型とカラム型の間の変換が定義されていない場合でも null 値を返すことが可能になる。
デフォルトは 1。
CreateDefaultPackage
省略可能
true または false。要求された DB2 パッケージを自動的に作成するかどうかを指定する。
true に設定すると、要求された DB2 パッケージがすでに存在する場合でも自動的に作成される。既存の DB2 パッケージは、新しいパッケージで置き換えられる。
false に設定すると、要求された DB2 パッケージが存在するかどうかが識別される。存在しない場合は自動的に作成される。
Linux/UNIX/Windows 上の DB2 では、このプロパティを ReplacePackage プロパティと組み合わせて使用する必要がある。
z/OS および iSeries 上の DB2 では、PackageCollection プロパティに指定したコレクションまたはライブラリに DB2 パッケージが作成される。
DB2 パッケージの作成の詳細については、「DB2 パッケージの作成」を参照。
デフォルトは false。
DatabaseName
接続先のデータベースの名前 (UDB で使用される)。

注意 : このプロパティは、Linux/UNIX/Windows 上の DB2 でのみサポートされる。

Database 接続プロパティ」も参照のこと。
DynamicSections
省略可能
DB2 ドライバが、どの時点においても開くことのできるプリペアド ステートメントの最大数。値は正の整数でなければならない。
デフォルトは 200。
EnableCancelTimeout
true または false。クエリがタイムアウトしたためにドライバから送信されたキャンセル リクエストに、キャンセルする文と同じクエリ タイムアウト値を適用するかどうかを指定する。
true に設定した場合、キャンセル リクエストは、キャンセルする文に設定されているタイムアウト値と同じ時間でタイムアウトする。たとえば、ある文でアプリケーションが Statement.setQueryTimeout(5) を呼び出し、タイムアウトが経過したためにその文がキャンセルされた場合、ドライバから送信されるキャンセル リクエストも実行時間が 5 秒を超えるとタイムアウトする。サーバ ダウン等の理由でキャンセル リクエストがタイムアウトすると、キャンセル リクエストがタイムアウトしたことを示す例外がドライバから送出され、その接続はそれ以降無効となる。
false に設定すると、キャンセル リクエストはタイムアウトしない。
EncryptionMethod
noEncryption、DBEncryption、または requestDBEncryption。

注意 : DB2 ドライバでは、iSeries 上の DB2 V5R3 以上での SSL 暗号化がサポートされている。DB2 ドライバによる暗号化の使用方法については、「データの暗号化」を参照。

ドライバとデータベース サーバの間でネットワークを介して転送するデータの暗号化/復号化に、DB2 固有の暗号化アルゴリズムを使用するかどうかを指定する。暗号化を使用する場合は、AuthenticationMethod プロパティの値を clearText、encryptedPassword、または encryptedUIDPassword に設定する必要もある。
noEncryption (デフォルト) に設定すると、データは暗号化/復号化されない。
DBEncryption に設定すると、データベース サーバで DES 暗号化がサポートされている場合は、データが DES で暗号化される。データベース サーバで DES 暗号化がサポートされていない場合は、接続に失敗して例外が送出される。
requestDBEncryption に設定すると、データベース サーバで DES 暗号化がサポートされている場合は、データが DES で暗号化される。データベース サーバで DES 暗号化がサポートされていない場合は、暗号化なしの接続の確立が試行される。
このプロパティをコンフィグレーションして最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照。
デフォルトは noEncryption。
Grantee
省略可能
DB2 パッケージの EXECUTE 特権を付与するスキーマの名前を指定する。値は有効な DB2 スキーマでなければならない。GrantExecute プロパティが false に設定されている場合、このプロパティは無視される。
重要 : PUBLIC 以外の値を使用すると、ドライバを使用するためのアクセスが制限される。たとえば、このプロパティを TSMITH に設定すると、サーバにアクセスしてドライバを使用できるユーザは TSMITH のみとなる。
DB2 パッケージの作成の詳細については、「DB2 パッケージの作成」を参照。
デフォルトは PUBLIC。
GrantExecute
省略可能
true または false。DB2 パッケージの EXECUTE 特権を、どの DB2 スキーマに付与するかを指定する。
true (デフォルト) に設定すると、Grantee プロパティに指定されているスキーマに EXECUTE 特権が付与される。
false に設定すると、DB2 パッケージを作成したスキーマに EXECUTE 特権が付与される。
DB2 パッケージの作成の詳細については、「DB2 パッケージの作成」を参照。
デフォルトは true。
InitializationString
ドライバがデータベースへの接続を確立し、その接続のすべての初期化を実行した後に実行する、1 つまたは複数の SQL コマンドを指定する。
たとえば、USER1 が USER2 所有のストアド プロシージャを、それらの修飾名を指定せずに呼び出す必要があるとする。このプロパティを使用すると、ユーザ定義の関数やストアド プロシージャの実行に使用するデフォルトのスキーマを設定する特殊レジスタ CURRENT PATH に USER2 を追加できる。
jdbc:bea:db2://server1:50000;
InitializationString=SET CURRENT PATH=current_path, USER2
複数のコマンドを指定する場合はセミコロンで区切る必要がある。また、このプロパティを接続 URL 内に指定する場合、複数のコマンドを指定するには値全体を括弧で囲む必要がある。次の接続 URL では、特殊レジスタ CURRENT PATH に USER2 を追加し、特殊レジスタ CURRENT PRECISION を DEC31 に設定している。
jdbc:bea:db2://server1:50000;
InitializationString=(SET CURRENT PATH=current_path, USER2;SET CURRENT PRECISION='DEC31')
注意 : CURRENT PRECISION 特殊レジスタの設定は、z/OS 上の DB2 でのみ有効。
SQL コマンドの実行が失敗すると、接続の試行も失敗し、どの SQL コマンドが失敗したかを示す例外が送出される。
InsensitiveResultSetBufferSize
-1、0、または x。ドライバがインセンシティブな結果セット データのキャッシュに使用するメモリの量を指定する。以下のいずれかの値を指定する必要がある。
-1 に設定すると、ドライバはすべてのインセンシティブな結果セット データをメモリにキャッシュする。結果セットのサイズが利用できるメモリ容量を超えると、OutOfMemoryException 例外が生成される。結果セット データをディスクに書き込む必要がないため、データがより効率的に処理される。
0 に設定すると、ドライバは 2GB を限度としてすべてのインセンシティブな結果セット データをメモリにキャッシュする。結果セット データのサイズが利用できるメモリ容量を超えると、その結果セット データがディスクにページングされる。結果セット データがディスクに書き込まれる可能性があるため、ディスクに正しく書き込むためにデータの再フォーマットが必要になることがある。
x (正の整数) に設定すると、インセンシティブな結果セット データのキャッシュに使用するメモリ バッファのサイズ (KB 単位) を指定したことになる。結果セットのサイズがバッファ サイズを超えると、結果セットがディスクにページングされる。結果セット データがディスクに書き込まれる可能性があるため、ディスクに正しく書き込むためにデータの再フォーマットが必要になることがある。バッファ サイズとして 2 の累乗を指定すると、メモリの使用がより効率的になる。
デフォルトは 2048 (KB)。
JavaDoubleToString
true または false。double 値や float 値を string 値に変換する際に、ドライバの内部変換アルゴリズムと JVM 変換アルゴリズムのどちらを使用するかを指定する。
true に設定すると、double 値や float 値を string 値に変換する際に JVM 変換アルゴリズムが使用される。
false (デフォルト) に設定すると、double 値や float 値を string 値に変換する際にドライバの内部変換アルゴリズムが使用される。内部変換アルゴリズムを使用するとパフォーマンスは向上するが、JVM アルゴリズムを使用した変換との間で、丸めによる多少の誤差が生じる可能性がある。ただし、これらの誤差は double および float データ型の誤差としては許容範囲内。
デフォルトは false。
LocationName
必須
アクセスする DB2 ロケーションの名前。
z/OS 上の DB2 では、システム管理者が次のコマンドを使用して、DB2 ロケーションの名前を指定する必要がある。
DISPLAY DDF
iSeries 上の DB2 では、システム管理者が次のコマンドを使用して、DB2 ロケーションの名前を指定する必要がある。このプロパティに使用すべき値は、*LOCAL としてリストされているデータベースの名前。
WRKRDBDIRE
このプロパティは、z/OS および iSeries 上の DB2 でのみサポートされる。
DatabaseName 接続プロパティ」も参照のこと。
LoginTimeout
省略可能
ドライバが接続が確立されるのを待機する時間 (秒単位)。この時間が経過すると、制御がアプリケーションに返され、タイムアウト例外が送出される。
0 (デフォルト) に設定すると、接続リクエストはタイムアウトしない。
PackageCollection
DB2 パッケージをバインドするコレクションまたはライブラリ (パッケージのグループ) の名前。
このプロパティは、Linux/UNIX/Windows 上の DB2 では無視される。
注意 : このプロパティは CollectionId プロパティに代わるものだが、CollectionId は下位互換性を確保するため存続している。PackageCollection プロパティと CollectionId プロパティの両方が指定されている場合、CollectionId プロパティは無視される。
DB2 パッケージの作成の詳細については、「DB2 パッケージの作成」を参照。
デフォルトは NULLID。
PackageOwner
省略可能
作成されたすべての DB2 パッケージで使用するオーナー。
DB2 パッケージの作成の詳細については、「DB2 パッケージの作成」を参照。
デフォルトは NULL。
Password
DB2 データベースに接続する場合に使用するパスワード。大文字と小文字を区別する。パスワードは、データベースでセキュリティが有効化されている場合にのみ必要となる。その場合は、システム管理者に連絡してパスワードを取得する。
PortNumber
省略可能
データベース サーバが接続をリスンする TCP ポート。デフォルトは 50000。
QueryTimeout
整数、-1、または 0。接続によって作成されるすべての文のデフォルトのクエリ タイムアウトを秒単位で設定する。
正の整数に設定すると、その値が接続によって作成されるすべての文のデフォルト タイムアウトとして使用される。この接続オプションで設定したデフォルト タイムアウトをオーバーライドするには、Statement.setQueryTimeout() メソッドを呼び出して特定の文のタイムアウト値を設定する。
-1 に設定すると、クエリ タイムアウト機能が無効になる。ドライバは、通知なしで Statement.setQueryTimeout() メソッドを呼び出す。
0 (デフォルト) に設定すると、デフォルトのクエリ タイムアウトは無限大となる (クエリはタイムアウトしない)。
デフォルトは 0。
ReplacePackage
省略可能
true または false。現在のバインド プロセスで、ドライバが使用する既存の DB2 パッケージを置き換えるかどうかを指定する。
true に設定すると、現在のバインド プロセスで、ドライバが使用する既存の DB2 パッケージを置き換えられる。
false (デフォルト) に設定すると、既存の DB2 パッケージは現在のバインド プロセスでは置き換えられない。
Linux/UNIX/Windows 上の DB2 では、このプロパティを CreateDefaultPackage プロパティと組み合わせて使用する必要がある。
DB2 パッケージの作成の詳細については、「DB2 パッケージの作成」を参照。
デフォルトは false。
ResultSetMetaDataOptions
0 または 1。アプリケーションでテーブル名情報が必要な場合は、Select 文の ResultSet メタデータにテーブル名情報を含めて返すことができる。
0 (デフォルト) に設定した場合は、ResultSetMetaData.getTableName() メソッドが呼び出されても、結果セットの各カラムの正しいテーブル名を特定するための追加処理は実行されない。この場合、getTableName() メソッドは結果セット内のカラムごとに空の文字列を返す可能性がある。
1 に設定した場合は、ResultSetMetaData.getTableName() メソッドが呼び出されると、結果セットの各カラムの正しいテーブル名を特定するための追加処理が実行される。DB2 ドライバは、ResultSetMetaData.getSchemaName() メソッドと ResultSetMetaData.getCatalogName() メソッドが呼び出された場合、スキーマ名とカタログ名の情報を返すこともできます (ドライバがこの情報を判別できる場合)。
このオプションをコンフィグレーションしてパフォーマンスを最適化する方法については、「パフォーマンスに関する考慮事項」を参照。
デフォルトは 0。
SecurityMechanism
非推奨
このプロパティは下位互換性を確保するため存続しているが、ドライバで使用する認証方法を設定する場合は、代わりに AuthenticationMethod を使用することを推奨する。
SendStreamAsBlob
省略可能
true または false。32K バイト未満のバイナリ ストリーム データを、Long Varchar for Bit Data または Blob データとしてデータベースに送信するかどうかを指定する。32K バイトを超えるバイナリ ストリームは Blob カラムにしか挿入できない。ドライバは、32K バイトを超えるバイナリ ストリーム データは常に Blob データとしてデータベースに送信する。
true に設定すると、ドライバは 2K バイト未満のバイナリ ストリーム データを DB2 Blob データとしてデータベースに送信する。ターゲット カラムが Blob カラムでなく Long Varchar for Bit Data カラムである場合は、Insert 文または Update 文が失敗する。ストリーム内のポインタをストリームの冒頭にリセットできる場合は、Insert 文または Update 文が自動的に再試行され、データが Long Varchar for Bit Data として送信される。バイナリ ストリーム データを Blob カラムに送信することが分かっている場合は、この値を設定することでパフォーマンスが向上する。
false に設定すると、ドライバは 32K バイト未満のバイナリ ストリーム データを Long Varchar for Bit Data データとしてデータベースに送信する。ターゲット カラムが Long Varchar for Bit Data カラムでなく Blob カラムである場合は、Insert 文または Update 文が失敗する。ストリーム内のポインタをストリームの冒頭にリセットできる場合は、Insert 文または Update 文が自動的に再試行され、データが Blob データとして送信される。
このプロパティをコンフィグレーションして最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照。
デフォルトは false。
ServerName
データベース サーバの IPv4 または IPv6 形式の IP アドレスを指定するか、ネットワークで名前付きのサーバがサポートされている場合はサーバ名を指定する。たとえば、122.23.15.12 または DB2Server のように指定する。
このプロパティは、データ ソース接続でのみサポートされる。
StripNewlines
省略可能
true または false。SQL 文の改行文字を DB2 サーバに送信するかどうかを指定する。アプリケーションで使用される SQL 文に改行文字が含まれていないことが分かっている場合は、改行文字の削除しないことを指定することで DB2 サーバによる解析が不要になり、ドライバのパフォーマンスが向上する。
true に設定すると、SQL 文からすべての改行文字が削除される。
false (デフォルト) に設定すると、SQL 文内の改行文字は削除されない。
このプロパティをコンフィグレーションして最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照。
デフォルトは false。
UseCurrentSchema
省略可能
true または false。スキーマが指定されていない状態、またはスキーマとしてワイルドカード文字 % が指定されている状態で DatabaseMetaData.getTables または DatabaseMetaData.getColumns() メソッドが呼び出された場合に、結果を現在のスキーマのテーブルとビューに制限するかどうかを指定する。結果を現在のスキーマのテーブルとビューに制限することで、スキーマが指定されていない getTables() メソッドの呼び出しのパフォーマンスが向上する。
true に設定すると、getTables() および getColumns() メソッドから返される結果が現在のスキーマのテーブルとビューに制限される。
false (デフォルト) に設定すると、getTables() および getColumns() メソッドの結果は限定されない。
このプロパティをコンフィグレーションして最適なパフォーマンスを実現する方法については、「パフォーマンスに関する考慮事項」を参照。
デフォルトは false。
User
DB2 データベースに接続する場合に使用するユーザ名。大文字と小文字を区別する。
WithHoldCursors
省略可能
true または false。コミット時ににカーソルを開いたままにするかどうかを指定する。DB2 は、コミット後にオープン カーソルをすべて閉じる (Delete) か開いたままにする (Preserve)。トランザクションのロールバック時には、このプロパティの設定にかかわらずすべてのカーソルが閉じられる。
true (デフォルト) に設定すると、カーソルの動作は Preserve になる。
false に設定すると、カーソルの動作は Delete になる。
デフォルトは true。
XMLDescribeType
clob または blob。XML データ型を、BLOB または CLOB のうちどちらのデータ型にマップするかを指定する。
clob (デフォルト) に設定すると、XML データ型は CLOB データ型にマップされます。
blob に設定すると、XML データ型は BLOB データ型にマップされます。
詳細については、「返される XML データとその挿入/更新」を参照してください。
デフォルトは clob。

 


パフォーマンスに関する考慮事項

以下に示す DB2 ドライバの接続プロパティを設定すると、アプリケーションのパフォーマンスを向上させることができます。

CatalogIncludesSynonyms

DatabaseMetaData.getColumns メソッドは、テーブルに関連付けられたシノニムやエリアスなど、テーブルに関する特性を判別するためによく使用されます。アプリケーションが Linux/UNIX/Windows 上の DB2 v7.x、z/OS 上の DB2、または iSeries 上の DB2 にアクセスしていて、データベース テーブルのシノニムを使用していない場合は、この情報を無視することでパフォーマンスを向上させることができます。Linux/UNIX/Windows 上の DB2 v8 以上にアクセスしている場合は、ドライバは DatabaseMetaData.getColumns() メソッドに対して常にシノニムを返します。

CatalogSchema

パフォーマンスを向上させるため、システム カタログ テーブルのビューをデフォルト以外のカタログ スキーマで作成できます。このプロパティが、ビューを含むスキーマの名前に設定されている場合、DB2 ドライバはカタログ テーブルのビューにアクセスできます。デフォルトのカタログ スキーマは、Linux/UNIX/Windows 上の DB2 の場合は SYSCAT、z/OS 上の DB2 の場合は SYSIBM、iSeries 上の DB2 の場合は QSYS2 です。

カタログ メソッドを正しく機能させるには、特定のカタログ テーブルのビューが指定したスキーマに存在している必要があります。必要となるビューは、使用している DB2 データベースによって異なります。指定されたスキーマに存在している必要があるカタログ テーブルのビューの詳細については、「カタログ メソッドのデフォルト以外のスキーマ」を参照してください。

EncryptionMethod

データの暗号化と復号化により余分なオーバーヘッド (主に CPU の使用率) がかかるため、パフォーマンスが低下する場合があります。

InsensitiveResultSetBufferSize

スクロールインセンシティブな結果セットを使用する場合のパフォーマンスを向上させるため、ドライバは結果セット データをディスクに書き込む代わりに、メモリにキャッシュできます。デフォルトでは、ドライバはインセンシティブな結果セット データを 2 MB までメモリにキャッシュし、残りの結果セット データをディスクに書き込みます。パフォーマンスを向上させるには、ドライバがデータをディスクに書き込む前に使用するメモリの量を増やすか、ドライバがインセンシティブな結果セット データをディスクに書き込めないようにします。最大キャッシュ サイズの設定は 2 GB です。

ResultSetMetaDataOptions

デフォルトでは、ResultSetMetaData.getTableName() メソッドが呼び出された場合、DB2 ドライバは、結果セット内の各カラムの正しいテーブル名を返すために必要な追加の処理を省略します。このため、getTableName() メソッドは結果セット内のカラムごとに空の文字列を返す可能性があります。アプリケーションでテーブル名情報が必要ない場合は、この設定によって最適なパフォーマンスが得られます。

ResultSet メタデータを返す方法の詳細については、「ResultSet メタデータのサポート」を参照してください。

SendStreamAsBlob

挿入または更新する大きなバイナリ オブジェクトが Blob として格納される場合は、バイナリ ストリームを Blob データとして送信すると、パフォーマンスを向上させることができます。その場合、このプロパティは true に設定してください。

StripNewLines

アプリケーションで使用される SQL 文に改行文字が含まれていないことが分かっている場合は、改行文字の削除に必要な解析を省略することで、ドライバのパフォーマンスを向上させることができます。

UseCurrentSchema

アプリケーションが現在のユーザのみに所有されているテーブルおよびビューにアクセスする必要がある場合は、このプロパティを true に設定することでアプリケーションのパフォーマンスを向上させることができます。このプロパティを true に設定した場合、getTables() および getColumns() メソッドを実行すると、ドライバは現在のユーザのみに所有されているテーブルおよびビューを返します。このプロパティを true に設定することは、getTables() または getColumns() の呼び出しの schemaPattern 引数として、接続で使用されているユーザ ID を渡すことと同じになります。

 


AS/400 上での locationName の設定

AS//400 上で動作する DB2 データベースに接続する場合、locationName プロパティを設定する必要があります。

  1. AS/400 上で WRKRDBDIRE コマンドを実行して、「Relational Database」の値を取得します。
  2. 次のような出力が表示されます。

       ,Relational,,Remote,Option,,Database,,Location,,Text,
       , ,, , ,,S10B757B,,*LOCAL ,, ,
  3. Java クライアントに、DB2 接続プロパティ「user」および「password」を指定した Properties オブジェクトを設定します (「DB2 接続プロパティ」を参照)。
  4. Driver.connect() に、パラメータとして次の文字列と Properties オブジェクトを指定します。
  5.    jdbc:bea:db2://<Host>:<Port>;LocationName=RelationalDatabaseName

    この例では、RelationalDatabaseNameWRKRDBDIRE コマンドを実行した結果として取得された Database の値です。

以下に Java クライアントの一部を示します。

   ...
   Properties props = new Properties();
   props.put("user", user);
   props.put("password", password);
   ...
   myDriver = (Driver)Class.forName("weblogic.jdbc.db2.DB2Driver").newInstance();
   conn = myDriver.connect("jdbc:bea:db2://10.1.4.1:446;LocationName=S10B757B", props);
   stmt = conn.createStatement();
   stmt.execute("select * from MYDATABASE.MYTABLE");
   rs = stmt.getResultSet();
   ...

 


DB2 パッケージの作成

DB2 パッケージは、プログラムの準備中に生成され、SQL 文の実行に使用される DB2 サーバ上の制御構造です。DB2 ドライバは接続時に必要なすべての DB2 パッケージを自動的に作成します。パッケージがすでに存在する場合、ドライバは既存のパッケージを使用して接続を確立します。

注意 : 接続用に作成する必要のあるパッケージの数やサイズによっては、初期接続に 2、3 分かかる場合があります。以降の接続ではこの遅延は発生しません。
注意 : パッケージの作成が完了すると、「DB2 packages created」というメッセージが標準出力に書き込まれます。

デフォルトでは、DB2 ドライバによって作成される DB2 パッケージには 200 の動的セクションが含まれており、NULLID コレクション (またはライブラリ) の中に作成されます。ほとんどの場合、DB2 ドライバが接続時に自動的に作成するため、DB2 パッケージを作成する必要はありません。必要な場合は、次のいずれかの方法で DB2 パッケージを作成できます。

注意 : ユーザ ID にデータベースに対する CREATE PACKAGE 特権がなければなりません。ない場合は、データベース管理者が代わりにパッケージを作成する必要があります。
注意 : JDBC データ ソースのコンフィグレーションに示されたユーザ ID はパッケージのオーナーでなければなりません。
注意 : DB2 パッケージを作成する際のユーザ ID には、データベースに対する BINDADD 特権が付与されている必要があります。適切な特権が付与されているかどうか不明な場合は、データベース管理者に問い合わせてください。

dbping を使用して DB2 パッケージを作成する

WebLogic Type 4 JDBC DB2 ドライバで DB2 サーバ上にパッケージを作成するには、WebLogic Server dbping ユーティリティを使用できます。dbping ユーティリティは、JDBC ドライバを介したクライアント マシンおよび DBMS 間の接続のテストに使用されます。WebLogic Type 4 JDBC DB2 ドライバは DB2 パッケージがまだ存在しない場合は自動的に作成するため、このユーティリティを実行すると DB2 サーバ上にデフォルトの DB2 パッケージが作成されます。

dbping ユーティリティを使用した DB2 パッケージの作成の詳細については、「dbping を使用して DB2 パッケージを作成する」を参照してください。

接続プロパティを使用した DB2 パッケージの作成

初期接続 URL 内に特定の接続プロパティを設定すると、DB2 パッケージを自動的に作成できます。表 3-2 に、DB2 パッケージを作成する場合に初期接続 URL で使用する接続プロパティを示します。

注意 : WebLogic Server JDBC データ ソースでは、データ ソースのすべての接続が同じ URL と接続プロパティを使用するため、この方法の使用はお勧めしません。複数の接続を持つ JDBC データ ソースを作成すると、データベース接続が作成されるたびにパッケージが再作成されます。

表 3-2 DB2 パッケージを作成する場合の初期接続 URL の接続プロパティ
プロパティ
データベース
PackageCollection=collection_name
(collection_name は DB2 パッケージをバインドするコレクションまたはライブラリの名前)
z/OS および iSeries 上の DB2
CreateDefaultPackage=true
Linux/UNIX/Windows、z/OS、および iSeries 上の DB2
ReplacePackage=true
Linux/UNIX/Windows 上の DB2
DynamicSections=x
(x は正の整数)
Linux/UNIX/Windows、z/OS、および iSeries 上の DB2

CreateDefaultPackage=TRUE を使用するとデフォルトの名前のパッケージが作成されます。CreateDefaultPackage=TRUE を使用して、CollectionId を指定しない場合、NULLID CollectionId が作成されます。

注意 : Linux/UNIX/Windows 上の DB2 で新しい DB2 パッケージを作成するには、ReplacePackage=trueCreateDefaultPackage=true と一緒に使用する必要があります。DB2 パッケージがすでに存在する場合は、ReplacePackage=true の場合にそのパッケージは置き換えられます。

Linux/UNIX/Windows 上の DB2 の例

次の URL では、400 の動的セクションを持つ DB2 パッケージが作成されます。DB2 パッケージがすでに存在している場合は、新しく作成したパッケージで置き換えられます。

   jdbc:bea:db2://server1:50000;DatabaseName=SAMPLE;
   CreateDefaultPackage=TRUE;ReplacePackage=TRUE;DynamicSections=400

z/OS および iSeries 上の DB2 の例

次の URL では、400 の動的セクションを持つ DB2 パッケージが作成されます。

   jdbc:bea:db2://server1:50000;LocationName=SAMPLE;
   CreateDefaultPackage=TRUE;DynamicSections=400

DB2 パッケージで動的セクションを増やす場合の注意

動的セクションは実在する実行可能オブジェクトで、動的 SQL リクエストに応答するために必要なロジックが含まれています。これらのセクションは、ハンドルやプリペアド ステートメント、およびそれに関連付けられた結果セットで使用します。

場合によっては、デフォルトの数 (200) より多くの動的セクションを持つ DB2 パッケージを作成する必要があります。アプリケーションで多数の動的セクションを持つ DB2 パッケージが必要な場合は、次の情報を考慮してください。

 


データ型

表 3-3 に、DB2 ドライバでサポートされるデータ型と、それらが JDBC データ型へどのようにマップされるかを示します。

表 3-3 DB2 データ型
DB2 データ型
JDBC のデータ型
Bigint1
BIGINT
Blob2
BLOB
Char
CHAR
Char for Bit Data
BINARY
Clob
CLOB
Date
DATE
DBClob3
CLOB
Decimal
DECIMAL
Double
DOUBLE
Float
FLOAT
Integer
INTEGER
Long Varchar
LONGVARCHAR
Long Varchar for Bit Data
LONGVARBINARY
Numeric
NUMERIC
Real
REAL
Rowid4
VARBINARY
Smallint
SMALLINT
Time
TIME
Timestamp
TIMESTAMP
Varchar
VARCHAR
Varchar for Bit Data
VARBINARY

1Linux/UNIX/Windows 上の DB2 v8.1 および v8.2 でのみサポートされる。

2Linux/UNIX/Windows 上の DB2 v8.1 および v8.2、z/OS 上の DB2、および iSeries 上の DB2 V5R2 および V5R3 でのみサポートされる (「Large Object (LOB) のサポート」を参照)。

3Linux/UNIX/Windows 上の DB2 v8.1 および v8.2、z/OS 上の DB2 7.x、v8.1、および v8.2、および iSeries 上の DB2 V5R2 および V5R3 でのみサポートされる (「Large Object (LOB) のサポート」を参照)。

4z/OS 上の DB2、および iSeries 上の DB2 V5R2 および V5R3 でのみサポートされる

Blob、Clob、および DBClob データ型の詳細については、「Large Object (LOB) のサポート」を参照してください。XML データ型の詳細については、「返される XML データとその挿入/更新」を参照してください。データ型の詳細については、「GetTypeInfo」を参照してください。

 


返される XML データとその挿入/更新

Linux/UNIX/Windows 上の DB2 V9.1 では、DB2 ドライバで XML データ型がサポートされます。XML データ型は、デフォルトでは JDBC CLOB データ型にマップされますが、XMLDescribeType 接続プロパティの値を blob に設定することで BLOB データ型にマップすることも可能です。

返される XML データ

ドライバからは、XML データを文字データまたはバイナリ データとして返すことができます。たとえば、あるデータベース テーブルを次のように定義したとします。

CREATE TABLE xmlTable (id int, xmlCol xml NOT NULL)

そして、次のようにコーディングしたとします。

String sql="SELECT xmlCol FROM xmlTable";
ResultSet rs=stmt.executeQuery(sql);

この場合、データベースから返される XML データが文字データになるかバイナリ データになるかは、XMLDescribeType プロパティの設定によって決まります。XML データ型は、デフォルトでは JDBC CLOB データ型にマップされます。次の接続 URL のように XML データ型が BLOB データ型にマップされている場合は、ドライバによって返される XML データが文字データではなくバイナリ データになります。

jdbc:bea:db2://server1:50000;DatabaseName=jdbc;User=test;
Password=secret;XMLDescribeType=blob

文字データ

XMLDescribeType=clob に設定すると、XML データは文字データとして返されます。結果セット カラムは、カラム型の CLOB で表現され、カラム型名は xml となります。

XMLDescribeType=clob に設定した場合は、アプリケーションで以下のメソッドを使用することで、XML カラムに文字データとして格納されているデータを返すことができます。

ResultSet.getString()
ResultSet.getCharacterStream()
ResultSet.getClob()
CallableStatement.getString()
CallableStatement.getClob()

データベース サーバから返された XML データは、データベース サーバで使用する UTF-8 エンコーディングから、UTF-16 Java 文字列エンコーディングに変換されます。

アプリケーションで次のメソッドを使用することで、XML カラムに ASCII データとして格納されているデータを返すことができます。

ResultSet.getAsciiStream()

データベース サーバから返された XML データは、データベース サーバで使用する UTF-8 エンコーディングから、ISO-8859-1 (latin1) エンコーディングに変換されます。

注意 : getAsciiStream() メソッドを使用して変換を行う場合に、コンテンツ エンコーディングがデフォルト エンコーディングではなく、コンテンツ エンティティを指定する XML 宣言が含まれていないと、整形式でない XML が作成される場合があります。アプリケーションで整形式の XML が必要になる場合は、getAsciiStream() メソッドを使用しないようにしてください。

XMLDescribeType=blob に設定した場合は、この節で説明した文字データ用のメソッドを使用しないでください。使用すると、JDBC 文字からバイナリへの標準の変換がデータに適用され、文字データの 16 進表現が返されます。

バイナリ データ

XMLDescribeType=blob に設定した場合、XML データはバイナリ データとして返されます。結果セット カラムは、カラム型の BLOB で表現され、カラム型名は xml となります。

XMLDescribeType=blob に設定した場合は、アプリケーションで以下のメソッドを使用することで、XML データをバイナリ データとして返すことができます。

ResultSet.getBytes()
ResultSet.getBinaryStream()
ResultSet.getBlob()
ResultSet.getObject()
CallableStatement.getBytes()
CallableStatement.getBlob()
CallableStatement.getObject()

データベース サーバから返される XML データにはデータ変換は適用されません。これらのメソッドは、UTF-8 としてエンコードされた XML データを格納するバイト配列またはバイナリ ストリームを返します。

XMLDescribeType=clob に設定した場合は、この節で説明したバイナリ データ用のメソッドを使用しないでください。使用すると、JDBC バイナリから文字への標準の変換がデータに適用され、バイナリ データの 16 進表現が返されます。

XML データの挿入と更新

XML データは、XMLDescribeType 接続プロパティの設定に関係なく、文字データまたはバイナリ データとして挿入したり更新したりできます。

文字データ

アプリケーションで以下のメソッドを使用することで、XML データを文字データとして挿入または更新できます。

PreparedStatement.setString()
PreparedStatement.setCharacterStream()
PreparedStatement.setClob()
PreparedStatement.setObject()
ResultSet.updateString()
ResultSet.updateCharacterStream()
ResultSet.updateClob()
ReultSet.updateObject()

データの文字表現がデータベース サーバで使用する XML 文字セットに変換され、変換後の XML データがサーバに送信されます。XML 処理手順が、ドライバによって解析されたり削除されたりすることはありません。

アプリケーションで以下のメソッドを使用することで、XML データを ASCII データとして更新できます。

PreparedStatement.setAsciiStream()
ResultSet.updateAsciiStream()

これらのメソッドに渡すデータは、ISO-8859-1 (latin 1) エンコーディングで解釈されます。ISO-8859-1 のデータがデータベース サーバで使用する XML 文字セットに変換され、変換後の XML データがサーバに送信されます。

バイナリ データ

アプリケーションで以下のメソッドを使用することで、XML データをバイナリ データとして挿入または更新できます。

PreparedStatement.setBytes()
PreparedStatement.setBinaryStream()
PreparedStatement.setBlob()
PreparedStatement.setObject()
ResultSet.updateBytes()
ResultSet.updateBinaryStream()
ResultSet.updateBlob()
ReultSet.updateObject()

XML データがデータベース サーバに送信される際に、データ変換が適用されることはありません。

 


認証

認証では、ユーザの識別情報を保護することで、悪意のあるハッカーが転送中のユーザ資格を傍受できないようになっています。概要については「認証」を参照してください。

DB2 ドライバでは、以下の認証方法がサポートされます。

ドライバの AuthenticationMethod 接続プロパティは、ドライバが接続を確立する際に使用する認証メカニズムを指定するために使用します。このプロパティに設定する値の詳細については、「AuthenticationMethod プロパティの使用」を参照してください。

AuthenticationMethod プロパティの使用

AuthenticationMethod 接続プロパティは、ドライバが接続を確立する際に使用する認証メカニズムを指定するために使用します。

AuthenticationMethod=kerberos に設定すると、接続を確立する際に Kerberos 認証が使用されます。User プロパティと Password プロパティに指定された値は無視されます。

AuthenticationMethod=encryptedUIDPasswordAuthenticationMethod=encryptedPassword、または AuthenticationMethod=clearText (デフォルト) に設定すると、接続を確立する際にユーザ ID/パスワード認証が使用されます。User プロパティはユーザ ID を提供します。Password プロパティはパスワードを提供します。DB2 サーバに渡される資格のセットは、指定した値によって変わってきます。

これらの値のいずれかを設定した場合は、EncryptionMethod プロパティに設定した方法でデータを暗号化することも可能です。

AuthenticationMethod=client を設定すると、接続を確立する際に、ドライバを実行しているシステムにログインしたユーザのユーザ ID が使用されます。クライアントでのみ認証が実施され、DB2 データベース サーバによる追加の認証は提供されません。User プロパティと Password プロパティに指定された値は無視されます。

ユーザ ID/パスワード認証のコンフィグレーション

暗号化されたユーザ ID およびパスワードによる認証を使用するには、J2SE 1.4 以上が必要です。

ユーザ ID/パスワード認証をコンフィグレーションするには
  1. AuthenticationMethod プロパティを encryptedUIDPassword、encryptedPassword、または clearText (デフォルト) に設定します。このプロパティに設定する値の詳細については、「AuthenticationMethod プロパティの使用」を参照してください。
  2. User プロパティにユーザ ID を設定します。
  3. Password プロパティにパスワードを設定します。

Kerberos 認証のコンフィグレーション

この節では、DB2 ドライバに Kerberos 認証をコンフィグレーションする場合の要件と手順について説明します。

製品要件

ドライバに Kerberos 認証をコンフィグレーションする前に、使用している環境が 表 3-4 の要件を満たしていることを確認してください。

表 3-4 DB2 ドライバに Kerberos 認証をコンフィグレーションする場合の要件 
コンポーネント
要件
データベース サーバ
データベース サーバは、以下のいずれかのバージョンでなければならない。
  • Linux/UNIX/Windows 上の DB2 v8.1 以上
  • z/OS 上の DB2 v7 以上
Kerberos サーバ
Kerberos サーバは、認証に使用するユーザ ID を管理する。Kerberos KDC も Kerberos サーバで管理する。
  • ネットワーク認証を、以下のいずれかの方法で提供する必要がある。
  • 以下のいずれかのオペレーティング システム上の Windows Active Directory
    • Windows Server 2003
    • Windows 2000 Server Service Pack 3 以上
  • MIT Kerberos 1.4.2 以上
クライアント
J2SE 1.4.2 以上がインストールされている必要がある。

ドライバをコンフィグレーションする

WebLogic Server JDBC ドライバをインストールする際には、Kerberos 認証で必要となる以下のファイルが WL_HOME\server\lib フォルダにインストールされます。なお、WL_HOME は WebLogic Server のインストール ディレクトリです。

ドライバをコンフィグレーションするには
  1. AuthenticationMethod プロパティを kerberos に設定します。このプロパティに設定する値の詳細については、「AuthenticationMethod プロパティの使用」を参照してください。
  2. krb5.conf ファイルをテキスト エディタで編集するか、java.security.krb5.realm and java.security.krb5.kdc システム プロパティを指定して、Kerberos レルム名とその KDC 名を指定します。
  3. 注意 : Windows Active Directory を使用している場合、Kerberos レルム名は Windows ドメイン名、KDC 名は Windows ドメイン コントローラ名となります。

    たとえば、Kerberos レルム名が XYZ.COM、KDC 名が kdc1 である場合、krb5.conf ファイルは次のようになります。

    [libdefaults] 
    default_realm = XYZ.COM

    [realms]
    XYZ.COM = {
    kdc = kdc1
    }

    krb5.conf ファイルに有効な Kerberos レルム名と KDC 名が指定されていない場合は、次の例外が送出されます。

    Message:[BEA][DB2 JDBC Driver]Could not establish a connection using integrated security: No valid credentials provided

    java.security.krb5.conf システム プロパティで別の Kerberos コンフィグレーション ファイルをロードするように設定されていない限り、WebLogic JDBC と一緒にインストールされた krb5.conf ファイルが自動的にロードされます。

  4. Java 2 プラットフォームのセキュリティ マネージャで Kerberos 認証を使用する場合は、アプリケーションとドライバにセキュリティ パーミッションを付与する必要があります。詳細については、「Kerberos 認証のためのパーミッション」を参照してください。

Kerberos 認証のユーザ資格の指定 (資格の委託)

Kerberos 認証を使用する場合、デフォルトでは、オペレーティング システムに保持されているユーザ ID とパスワードを使用して、データベースにアクセスするユーザの認証が行われます。オペレーティング システムで使用されているユーザ名とパスワードをデータベースでも使用できるため、有効なオペレーティング システム アカウントにログインしているユーザであれば、ユーザ名とパスワードを入力せずにデータベースにログインできます。

デフォルト以外のユーザ資格を使用することも可能です。たとえば、アプリケーション サーバや Web サーバの多くは、サーバ ユーザとしてではなく、アプリケーションが実行されているマシンにログオンしたクライアント ユーザの代理として処理を実行します。

サーバ ユーザのオペレーティング システム資格ではなく、それ以外のユーザ資格を使用したい場合は、次のようなコードをアプリケーションに追加し、認証に使用する javax.security.auth.Subject を取得してドライバに渡します。

import javax.security.auth.Subject;
import javax.security.auth.login.LoginContext;
import java.sql.*;

// ここでは、認証に使用する javax.security.auth.Subject
// インスタンスを作成する。LoginContext を使用して
// Subject を取得する方法の詳細については、JAAS (Authentication and
// Authorization Service) のドキュメントを参照。

LoginContext lc = null;
Subject subject = null;

try {

lc = new LoginContext("JaasSample", new TextCallbackHandler());
lc.login();
subject = lc.getSubject();
}
catch (Exception le) {
... // ログイン エラーを表示する。
}

// このアプリケーションは、ドライバ コードをサブジェクトとして実行することで、
// javax.security.auth.Subject をドライバに渡す。

Connection con =
(Connection) Subject.doAs(subject, new PrivilegedExceptionAction() {

public Object run() {

Connection con = null;
try {

Class.forName("com.ddtek.jdbc.db2.DB2Driver");
String url = "jdbc:bea:db2://myServer:50000;
DatabaseName=jdbc";
con = DriverManager.getConnection(url);
}
catch (Exception except) {

... // 接続エラーをログに記録する。
Return null;
}

return con;
}
});

// これで、このアプリケーションで使用する接続がサブジェクトを使用して
// 認証されたことになる。これにより、アプリケーションで接続を使用できるようになる。
Statement stmt = con.createStatement();
String sql = "select * from employee";
ResultSet rs = stmt.executeQuery(sql);

... // 結果に基づいて処理を行う。

Kerberos チケット認可チケットの取得

アプリケーション ユーザが Kerberos 認証を使用する場合は、まず Kerberos サーバから Kerberos チケット認可チケット (TGT) を取得する必要があります。Kerberos サーバでは、TGT に格納されている資格を使用して、ユーザの識別情報を検証し、サービスへのアクセスを制御します。

Windows クライアント上のアプリケーションから Kerberos 認証を使用する場合は、アプリケーション ユーザが明示的に TGT を取得する必要はありません。ユーザの TGT は、Windows Active Directory によって自動的に取得されます。

UNIX または Linux クライアント上のアプリケーションから Kerberos 認証を使用する場合は、ユーザが明示的に TGT を取得する必要があります。ユーザが TGT を明示的に取得するには、kinit コマンドを使用して Kerberos サーバにログインする必要があります。たとえば、次に示すコマンドは、有効期間が 10 時間で 5 日間更新可能な TGT をサーバに要求しています。

kinit -l 10h -r 5d user

ここで、user はアプリケーション ユーザです。

kinit コマンドの使用とユーザの TGT の取得については、Kerberos ドキュメントを参照してください。

クライアント認証のコンフィグレーション

AuthenticationMethod プロパティを client に設定します。このプロパティに設定する値の詳細については、「AuthenticationMethod プロパティの使用」を参照してください。

 


データの暗号化

DB2 ドライバでは、iSeries 上の DB2 V5R3 以上で SSL 暗号化がサポートされるようになりました。SSL が提供する暗号化と認証によって、データの整合性を確保できます。DB2 ドライバでは、SSL サーバ認証と SSL クライアント認証の両方がサポートされます。

詳細については、「SSL 暗号化」を参照してください。

注意 : データの暗号化と復号化により余分なオーバーヘッド (主に CPU の使用率) がかかるため、パフォーマンスが低下する場合があります。

SSL 暗号化のコンフィグレーション

注意 : ドライバが SSL 用にコンフィグレーションされているのにデータベース サーバで SSL がサポートされていないと、接続のハングが発生する可能性があります。SSL をサポートしていないサーバに接続した場合に発生する問題を回避するには、LoginTimeout プロパティを使用してログイン タイムアウトを設定します。
SSL 暗号化をコンフィグレーションするには
  1. EncryptionMethod プロパティを SSL に設定します。
  2. SSL サーバ認証に使用するトラストストア ファイルの場所とパスワードを指定します。TrustStore および TrustStorePassword プロパティ、またはそれぞれに対応する Java システム プロパティ (javax.net.ssl.trustStore および javax.net.ssl.trustStorePassword) を設定します。
  3. データベース サーバから送信された証明書を検証する場合は、ValidateServerCertificate プロパティを true に設定します。
  4. 必要に応じて、証明書の検証に使用するホスト名を HostNameInCertificate プロパティに設定します。HostNameInCertificate プロパティは、ドライバが接続されているサーバが実際に要求されたサーバであることを保証することにより、介在者の攻撃 (man-in-the-middle attack) を防ぐための追加のセキュリティを提供します。
  5. データベース サーバが SSL クライアント認証用にコンフィグレーションされている場合は、使用するキーストア情報をコンフィグレーションします。
    1. キーストア ファイルの場所とパスワードを指定します。KeyStore および KeyStorePassword プロパティ、またはそれぞれに対応する Java システム プロパティ (javax.net.ssl.keyStore および javax.net.ssl.keyStorePassword) を設定します。
    2. キーストア ファイル内のいずれかのキー エントリがパスワードで保護されている場合は、KeyPassword プロパティにキー パスワードを設定します。

SSL 接続プロパティ

EncryptionMethod 接続プロパティの値として、SSL 暗号化を有効にするための「SSL」が追加されました。ドライバへの SSL 暗号化の実装方法は、新たに追加された以下の接続オプションでコンフィグレーションします。

表 3-5 では、これらの接続プロパティについて説明します。

表 3-5 SSL 接続プロパティ (DB2 ドライバ) 
プロパティ
説明
EncryptionMethod
  デフォルト : noEncryption
  データ型 : String
noEncryption、DBEncryption、requestDBEncryption、または SSL。ドライバとデータベース サーバの間でネットワークを介してデータを転送する際に、そのデータを暗号化/復号化するかどうかを指定する。DB2 ドライバでは、以下の暗号化方法がサポートされる。
  • DB2 固有の暗号化 (Linux/UNIX/Windows 上の DB2 および z/OS 上の DB2)
  • SSL (iSeries 上の DB2 V5R3 以上)
noEncryption (デフォルト) に設定すると、データは暗号化/復号化されない。
DBEncryption に設定すると、データベース サーバで DES 暗号化がサポートされている場合は、データが DES で暗号化される。データベース サーバで DES 暗号化がサポートされていない場合は、接続に失敗して例外が送出される。この値は、Linux/UNIX/Windows 上の DB2 および z/OS 上の DB2 でサポートされる。
requestDBEncryption に設定すると、データベース サーバで DES 暗号化がサポートされている場合は、データが DES で暗号化される。データベース サーバで DES 暗号化がサポートされていない場合は、暗号化なしの接続の確立が試行される。この値は、Linux/UNIX/Windows 上の DB2 および z/OS 上の DB2 でサポートされる。
SSL に設定すると、データが SSL で暗号化される。データベース サーバで SSL がサポートされていない場合は、接続に失敗して例外が送出される。この値は、iSeries の DB2 V5R3 以上でサポートされる。
SSL を有効にすると、以下のプロパティも適用される。
HostNameInCertificate
KeyStore (SSL クライアント認証用)
KeyStorePassword (SSL クライアント認証用)
KeyPassword (SSL クライアント認証用)
TrustStore
TrustStorePassword
ValidateServerCertificate

注意 : ドライバが SSL 用にコンフィグレーションされているのにデータベース サーバで SSL がサポートされていないと、接続のハングが発生する可能性がある。SSL をサポートしていないサーバに接続した場合に発生する問題を回避するには、LoginTimeout プロパティを使用してログイン タイムアウトを設定する。

データ暗号化のコンフィグレーションの詳細については、「SSL 暗号化のコンフィグレーション」を参照。
HostNameInCertificate
  デフォルト : 空文字列
  データ型 : String
host_name または #SERVERNAME#。SSL 暗号化と証明書の検証が有効になっている (EncryptionMethod=SSL および ValidateServerCertificate=true が指定されている) 場合に、証明書の検証に使用するホスト名を指定する。省略可能なこのプロパティは、ドライバが接続されているサーバが実際に要求されたサーバであることを保証することにより、介在者の攻撃 (man-in-the-middle attack) を防ぐための追加のセキュリティを提供する。
ホスト名が指定されている場合は、指定されたホスト名が、証明書内の SubjectAlternativeName の DNSName 値と照合される。DNSName 値が SubjectAlternativeName 内に存在しない場合や、証明書に SubjectAlternativeName が含まれていない場合、ホスト名は証明書のサブジェクト名の共通名 (CN) 部分と照合される。値が一致しない場合は、接続に失敗して例外が送出される。
#SERVERNAME# が指定されている場合は、接続 URL 内に指定されたサーバ名が、証明書内の SubjectAlternativeName の DNSName 値と照合される。DNSName 値が SubjectAlternativeName 内に存在しない場合や、証明書に SubjectAlternativeName が含まれていない場合、ホスト名は証明書のサブジェクト名の CN 部分と照合される。値が一致しない場合は、接続に失敗して例外が送出される。
注意 : 複数の CN 部分が存在する場合は、ホスト名がそれぞれの CN 部分と照合される。照合が 1 つでも一致すれば、接続が確立される。
指定されていない場合は、接続 URL 内に指定されたサーバ名または接続のデータ ソースを使用して証明書が検証される。
SSL 暗号化または証明書の検証が有効になっていない場合、このプロパティは無視される。
KeyPassword
  デフォルト : なし
  データ型 : String
EncryptionMethod プロパティで SSL が有効になっており、データベース サーバで SSL クライアント認証が有効になっている場合に、キーストア ファイル内の個別のキーにアクセスするために使用するパスワードを指定する。このプロパティは、キーストア ファイル内のいずれかのキーに、キーストア ファイルとは異なるパスワードが保持されている場合に有用。
KeyStore
  デフォルト : なし
  データ型 : String
EncryptionMethod プロパティで SSL が有効になっており、データベース サーバで SSL クライアント認証が有効になっている場合に、使用するキーストア ファイルのディレクトリを指定する。キーストア ファイルには、サーバからの証明書リクエストへの応答としてクライアントからサーバに送信される証明書が格納されている。
この値によって、javax.net.ssl.keyStore Java システム プロパティに指定されたキーストア ファイルのディレクトリがオーバーライドされる。このプロパティが指定されていない場合は、javax.net.ssl.keyStore Java システム プロパティに指定されたキーストア ファイルのディレクトリが使用される。
注意 : キーストア ファイルとトラストストア ファイルは同じファイルでも構わない。
KeyStorePassword
  デフォルト : なし
  データ型 : String
EncryptionMethod プロパティで SSL が有効になっており、データベース サーバで SSL クライアント認証が有効になっている場合に、キーストア ファイル内にアクセスするために使用するパスワードを指定する。キーストア ファイルには、サーバからの証明書リクエストへの応答としてクライアントからサーバに送信される証明書が格納されている。
この値によって、javax.net.ssl.keyStorePassword Java システム プロパティに指定されたキーストア ファイルのパスワードがオーバーライドされる。このプロパティが指定されていない場合は、javax.net.ssl.keyStorePassword Java システム プロパティに指定されたキーストア ファイルのパスワードが使用される。
注意 : キーストア ファイルとトラストストア ファイルは同じファイルでも構わない。
TrustStore
  デフォルト : なし
  データ型 : String
EncryptionMethod プロパティで SSL が有効になっており、サーバ認証を使用している場合に、使用するトラストストア ファイルのディレクトリを指定する。トラストストア ファイルには、クライアントが信頼する認証局 (CA) のリストが格納されている。
この値によって、javax.net.ssl.trustStore Java システム プロパティに指定されたトラストストア ファイルのディレクトリがオーバーライドされる。このプロパティが指定されていない場合は、javax.net.ssl.trustStore Java システム プロパティに指定されたトラストストア ファイルのディレクトリが使用される。
このプロパティは、ValidateServerCertificate=false に設定されている場合は無視される。
TrustStorePassword
  デフォルト : なし
  データ型 : String
EncryptionMethod プロパティで SSL が有効になっており、サーバ認証を使用している場合に、トラストストア ファイルにアクセスするために使用するパスワードを指定する。トラストストア ファイルには、クライアントが信頼する認証局 (CA) のリストが格納されている。
この値によって、javax.net.ssl.trustStorePassword Java システム プロパティに指定されたトラストストア ファイルのパスワードがオーバーライドされる。このプロパティが指定されていない場合は、javax.net.ssl.trustStorePassword Java システム プロパティに指定されたトラストストア ファイルのパスワードが使用される。
このプロパティは、ValidateServerCertificate=false に設定されている場合は無視される。
ValidateServerCertificate
デフォルト : true
  データ型 : boolean
true または false。SSL 暗号化が有効 (EncryptionMethod=SSL) になっている場合に、データベース サーバから送信された証明書を検証するかどうかを指定する。SSL サーバ認証を使用する場合、サーバから送信されるすべての証明書は、信頼性のある認証局 (CA) で発行されたものでなければならない。テスト環境においては、信頼性のある CA が発行した証明書でなくても、サーバから返されたすべての証明書をドライバが信頼するようにすることで、テスト環境内の各クライアントでトラストストア情報を指定する手間を省くことができる。
true (デフォルト) に設定すると、データベース サーバから送信された証明書が検証される。サーバから送信されるすべての証明書は、トラストストア ファイル内の信頼性のある CA によって発行されたものでなければならない。HostNameInCertificate プロパティを指定した場合は、ホスト名による証明書の検証も行われる。省略可能なこの HostNameInCertificate プロパティは、ドライバが接続されているサーバが実際に要求されたサーバであることを保証することにより、介在者の攻撃 (man-in-the-middle attack) を防ぐための追加のセキュリティを提供する。
false に設定すると、データベース サーバから送信された証明書は検証されない。TrustStore および TrustStorePassword プロパティ (または対応する Java システム プロパティ) に指定されたトラストストア情報は無視される。
トラストストア情報は、TrustStore および TrustStorePassword プロパティ (または対応する Java システム プロパティ) を使用して指定する。

 


カタログ メソッドのデフォルト以外のスキーマ

CatalogSchema プロパティがデフォルト以外のスキーマに設定されている場合に、カタログ メソッドが適切に機能するためには、表 3-6 に示すカタログ テーブルのビューが、指定されたスキーマに存在している必要があります。必要となるビューは、使用している DB2 データベースによって異なります。

表 3-6 DB2 のカタログ テーブル
データベース
カタログ テーブル
Linux/UNIX/Windows 上の DB2
SYSCAT.TABLES
SYSCAT.COLUMNS
SYSCAT.PROCEDURES
SYSCAT.PROCPARAMS
SYSCAT.COLAUTH
SYSCAT.TABAUTH
SYSCAT.KEYCOLUSE
SYSCAT.INDEXES
SYSCAT.INDEXCOLUSE
SYSCAT.REFERENCES
SYSCAT.SYSSCHEMATA
SYSCAT.TYPEMAPPINGS
SYSCAT.DBAUTH
z/OS 上の DB2
SYSIBM.SYSTABCONST
SYSIBM.SYSTABLES
SYSIBM.SYSSYNONYMS
SYSIBM.SYSCOLUMNS
SYSIBM.SYSPROCEDURES
SYSIBM.SYSROUTINES
SYSIBM.SYSPARMS
SYSIBM.SYSCOLAUTH
SYSIBM.SYSTABAUTH
SYSIBM.SYSKEYS
SYSIBM.SYSINDEXES
SYSIBM.SYSRELS
SYSIBM.SYSFOREIGNKEYS
SYSIBM.SYSSCHEMAAUTH
SYSIBM.SYSDBAUTH
iSeries 上の DB2
QSYS2.SYSCST
QSYS2.SYSKEYCST
QSYS2.SYSPROCS
QSYS2.SYSPARMS
QSYS2.SYSTABLES
QSYS2.SYSSYNONYMS
QSYS2.SYSCOLUMNS
QSYS2.SQLTABLEPRIVILEGES
QSYS2.SYSKEYS
QSYS2.SYSINDEXES
QSYS2.SYSREFCST

 


SQL エスケープ シーケンス

DB2 ドライバでサポートされている SQL エスケープ シーケンスについては、「JDBC の SQL エスケープ シーケンス」を参照してください。

 


アイソレーション レベル

DB2 ドライバでサポートされるアイソレーション レベルを表 3-7 に示します。JDBC アイソレーション レベルは、表に示す適切な DB2 トランザクション アイソレーション レベルにマップされています。デフォルトのアイソレーション レベルは Read Committed です。

表 3-7 サポートされるアイソレーション レベル
JDBC アイソレーション レベル
DB2 アイソレーション レベル
なし
No Commit1
Read Committed
Cursor Stability
Read Uncommitted
Uncommitted Read
Repeatable Read
Read Stability
Serializable
Repeatable Read

1ジャーナリングが有効になっていない DB2 iSeries バージョン用にサポートされている。

 


スクロール可能なカーソルの使用

DB2 ドライバは、スクロールインセンシティブな結果セット、および更新可能な結果セットをサポートしています。

注意 : DB2 ドライバが、要求された結果セットのタイプまたは同時実行性をサポートできない場合は、カーソルを自動的にダウングレードして詳細情報の入った SQLWarning を生成します。

 


JTA のサポート

DB2 ドライバで JTA を介して分散トランザクションを使用するには、以下のいずれかのバージョンのデータベースを使用する必要があります。

 


Large Object (LOB) のサポート

Blob の取得および更新は、DB2 ドライバと以下のデータベースでサポートされます。

Clob の取得および更新は、DB2 ドライバとサポート対象のすべての DB2 データベースでサポートされます。DB2 ドライバは以下の DB2 データベースで、最大 2 GB の Clob をサポートします。

上記以外のサポート対象の DB2 データベースの場合、DB2 ドライバは最大 32KB の Clob の取得および更新をサポートします。

DBClob の取得および更新は、DB2 ドライバと以下のデータベースでサポートされます。

 


バッチ挿入とバッチ更新

DB2 ドライバでは、ネイティブの DB2 バッチ メカニズムが使用されます。デフォルトでは、PreparedStatement を使用して実行されるバッチ処理のパラメータ値を設定するのに使用するメソッドは、パラメータが関連付けられるカラムのデータベース データ型に一致する必要があります。

DB2 サーバでは暗黙的なデータ変換を実行しないため、カラムのデータ型に一致しないパラメータ値を指定すると、DB2 サーバはエラーを生成します。たとえば、ストリームまたは配列の長さが 32KB 未満の場合にそのストリームまたはバイト配列を使用して Blob パラメータの値を設定するには、setObject() メソッドを使用し、対象の JDBC 型を BLOB として指定する必要があります。setBinaryStream() または setBytes() メソッドは使用できません。

メソッド タイプの制限を削除するには、BatchPerformanceWorkaround プロパティを true に設定します。たとえば、setBinaryStream() または setBytes() メソッドを使用すると、ストリームや配列の長さに関係なく Blob パラメータの値を設定できます。ただし、パラメータの設定は指定された順序で実行されない場合もあります。パラメータ データを正しいデータ型に変換して文を再実行する必要があるため、パフォーマンスが低下する場合があります。

注意 : Administration Console でデータ ソースを作成する場合、Administration Console では BatchPeformanceWorkaround 接続プロパティが、デフォルトで true に設定されます。
注意 : DB2 用の WebLogic Type 4 JDBC ドライバを使用し、JMS JDBC ストアとして使用されるデータ ソースの場合は、BatchPerformanceWorkaround プロパティを true に設定する必要がある。

 


パラメータ メタデータのサポート

DB2 ドライバでは、この節で説明するようにパラメータ メタデータを返すことができます。

Insert 文および Update 文

DB2 ドライバは、以下の DB2 データベースで、あらゆるタイプの SQL 文のパラメータ メタデータを返すことができます。

Linux/UNIX/Windows 上の DB2 v7x および iSeries 上の DB2 V5R1 の場合、DB2 ドライバは、以下の形式の Insert 文および Update 文のパラメータ メタデータを返すことができます。

ここで、operator は SQL 演算子 (=、<、>、<=、>=、または <>) です。

Select 文

DB2 ドライバは、以下の DB2 データベースで、あらゆるタイプの SQL 文のパラメータ メタデータを返すことができます。

Linux/UNIX/Windows 上の DB2 v7x および iSeries 上の V5R1 の場合、DB2 ドライバは、ANSI SQL 92 エントリレベルの述語 (比較、BETWEEN、IN、LIKE、EXISTS などの述語構文) にパラメータを含んでいる Select 文に対してパラメータ メタデータを返すことができます。詳細な構文については、ANSI SQL リファレンスを参照してください。

以下のいずれかの条件に該当する場合は、Select 文に対してパラメータ メタデータを返すことができます。

以下の Select 文では、パラメータ メタデータを返すことができる例をさらに示しています。

   SELECT col1, col2 FROM foo WHERE col1 = ? and col2 > ?
   SELECT ... WHERE colname = (SELECT col2 FROM t2
      WHERE col3 = ?)
   SELECT ... WHERE colname LIKE ?
   SELECT ... WHERE colname BETWEEN ? and ?
   SELECT ... WHERE colname IN (?, ?, ?)
   SELECT ... WHERE EXISTS(SELECT ... FROM T2 WHERE col1 < ?)

GROUP BY、HAVING、または ORDER BY を含む WHERE 句で ANSI SQL 92 エントリレベルの述語を使用する文がサポートされます。次に例を示します。

   SELECT * FROM t1 WHERE col = ?ORDER BY 1

結合がサポートされます。次に例を示します。

   SELECT * FROM t1,t2 WHERE t1.col1 = ?

完全修飾名とエリアスがサポートされます。次に例を示します。

   SELECT a, b, c, d FROM T1 AS A, T2 AS B WHERE A.a = ?
      and B.b = ?"

ストアド プロシージャ

DB2 ドライバは、ストアド プロシージャの引数に対してパラメータ メタデータを返すことができます。

 


ResultSet メタデータのサポート

アプリケーションでテーブル名情報が必要な場合、DB2 ドライバは Select 文の ResultSet メタデータに含めてテーブル名情報を返すことができます。ResultSetMetaDataOptions プロパティを 1 に設定した場合、ResultSetMetaData.getTableName() メソッドが呼び出されたとき、DB2 ドライバは結果セット内の各カラムの正しいテーブル名を決定する追加の処理を実行します。それ以外の場合、getTableName() メソッドは結果セット内のカラムごとに空の文字列を返す可能性があります。

DB2 ドライバが返すテーブル名情報は、結果セット内のカラムがデータベース テーブル内のカラムにマップされているかどうかによって異なります。結果セット内の各カラムがデータベース テーブル内のカラムにマップされている場合、DB2 ドライバはそのカラムに関連付けられているテーブル名を返します。結果セット内の各カラムがテーブル内のカラムにマップされていない場合 (集約やリテラルなど)、DB2 ドライバは空の文字列を返します。

ResultSet メタデータが返される Select 文には、エリアス、結合、および完全修飾名を含めることができます。以下のクエリは、ResultSetMetaData.getTableName() メソッドによって Select リスト内の各カラムの正しいテーブル名が返される、Select 文の例です。

   SELECT id, name FROM Employee
   SELECT E.id, E.name FROM Employee E
   SELECT E.id, E.name AS EmployeeName FROM Employee E
   SELECT E.id, E.name, I.location, I.phone FROM Employee E,
      EmployeeInfo I WHERE E.id = I.id
   SELECT id, name, location, phone FROM Employee,
      EmployeeInfo WHERE id = empId
   SELECT Employee.id, Employee.name, EmployeeInfo.location,
      EmployeeInfo.phone FROM Employee, EmployeeInfo
      WHERE Employee.id = EmployeeInfo.id

生成されたカラムの場合、ドライバによって返されるテーブル名は空の文字列です。以下のクエリは、生成されたカラム (「upper」という名前のカラム) を含む結果セットを返す Select 文の例です。

   SELECT E.id, E.name as EmployeeName, {fn UCASE(E.name)} 
      AS upper FROM Employee E

DB2 ドライバは、ResultSetMetaData.getSchemaName() メソッドと ResultSetMetaData.getCatalogName() メソッドが呼び出された場合、スキーマ名とカタログ名の情報を返すこともできます (ドライバがこの情報を判別できる場合)。たとえば、以下の文の場合、DB2 ドライバはカタログ名として「test」、スキーマ名として「test1」、テーブル名として「foo」を返します。

   SELECT * FROM test.test1.foo 

テーブル名、スキーマ名、およびカタログ名の情報を返すために必要な追加の処理は、ResultSetMetaData.getTableName()ResultSetMetaData.getSchemaName()、または ResultSetMetaData.getCatalogName() メソッドが呼び出された場合にのみ実行されます。

 


Rowset のサポート

DB2 ドライバは、以下のような RowSet インタフェースの JSR 114 実装をサポートします。

ドライバで RowSet を使用するには、J2SE 1.4 以上が必要です。

JSR 114 の詳細については、 http://www.jcp.org/en/jsr/detail?id=114 を参照してください。

 


自動生成キーのサポート

DB2 ドライバは自動生成キーの値の取得をサポートします。DB2 ドライバから返される自動生成キーは、auto-increment カラムの値です。

自動生成キーの値を返すことができるのは、アプリケーションで Insert 文を実行するときです。値を返す方法は、パラメータを含む Insert 文を使用しているかどうかによって異なります。

自動生成キーの値は、Statement.getGeneratedKeys() メソッドを使用して取得できます。このメソッドは、各自動生成キーのカラムとともに ResultSet オブジェクトを返します。

 


Database 接続プロパティ

Database 接続プロパティは、DatabaseName 接続プロパティのシノニムとして使用できます。

接続 URL に Database と DatabaseName の両方の接続プロパティが指定されている場合は、接続 URL 内で後ろの方に指定されているプロパティが使用されます。たとえば、アプリケーションで次のような URL を指定した場合、DatabaseName 接続プロパティの値ではなく、Database 接続プロパティの値が使用されます。

jdbc:bea:db2://server1:50000;DatabaseName=jdbc;Database=acct;
User=test;Password=secret

 


DatabaseName 接続プロパティ

z/OS または iSeries 上の DB2 に接続する場合、DB2 ロケーションの名前を指定するには LocationName 接続プロパティを使用する必要がありました。しかし、Linux/UNIX/Windows だけでなく z/OS および iSeries 上の DB2 に接続する場合にも、DatabaseName 接続プロパティを使用できるようになりました。

Linux/UNIX/Windows 上の DB2 に接続する場合は、DatabaseName 接続プロパティを使用してデータベースの名前を指定します。z/OS または iSeries 上の DB2 に接続する場合は、DatabaseName 接続プロパティを使用して DB2 ロケーションの名前を指定します。

 


新しいデータ型

DB2 ドライバでは、以下がサポートされるようになりました。

表 3-8 および 表 3-9 に、これらのデータ型と JDBC データ型へのマッピングを示します。

表 3-8 DB2 グラフィック データ型
DB2 データ型
JDBC のデータ型
Graphic
CHAR
Long Vargraphic
LONGVARCHAR
Vargraphic
VARCHAR

表 3-9 z/OS 上の DB2 v9.1 でサポートされる新しい DB2 データ型
DB2 データ型
JDBC のデータ型
Bigint
BIGINT
Binary
BINARY
Decfloat
DECIMAL
Varbinary
VARBINARY
XML
CLOB

getTypeInfo() メソッドによって返されるデータ型については、「GetTypeInfo」を参照してください。

XML データ型の使用方法については、「返される XML データとその挿入/更新」を参照してください。

DB2 ドライバでサポートされるその他のデータ型については、「データ型」を参照してください。

 


z/OS 用の SQL プロシージャ

z/OS 上の DB2 v9.1 で SQL プロシージャがサポートされるようになりました。

 


IPv6 のサポート

z/OS 上の DB2 v9.1 の DB2 ドライバで、IPv6 がサポートされるようになりました。

IPv6 の詳細については、「IP アドレスの使用」を参照してください。


ページの先頭       前  次