Cosminexus 機能解説
付録I.4 データベース接続の設定
JDBCドライバのロードに,次のドライバ名称およびパッケージ名称を設定します。
設定項目 |
設定値 |
ドライバ名称 |
JdbcDbpsvDriver |
パッケージ名称 |
JP.co.Hitachi.soft.DBPSV_Driver |
ドライバ名称およびパッケージ名称は,次のどちらかの方法で設定してください。
- Class.forNameメソッドでの設定
Class.forNameメソッドでアプリケーションからJDBCドライバを登録します。
アプリケーション内に次のように記述してください。
Class.forName("JP.co.Hitachi.soft.DBPSV_Driver.JdbcDbpsvDriver")
|
- システム(java.lang.System)プロパティのjdbc.driversでの指定
システムプロパティにJDBCドライバを登録します。
システムプロパティでの指定方法は,Javaの各処理系の仕様に依存します。
次に,システムプロパティへの登録方法を示します。
- Appletviewerでの指定−Javaアプレットの場合
[JAVA_HOME]/.hotjava/propertiesファイルに次の記述を追加してください。複数のドライバを使用する場合は,「:(コロン)」で区切って記述してください。なお,[JAVA_HOME]とは,環境変数PATHに設定した値のことです。[JAVA_HOME]は,Java実行環境によって異なります。
jdbc.drivers="JP.co.Hitachi.soft.DBPSV_Driver.JdbcDbpsvDriver"
|
- Javaのメソッドでの設定
System.setPropertyメソッドを使用してシステムプロパティに登録してください。次のように記述してください。
System.setProperty("jdbc.drivers", "JP.co.Hitachi.soft.DBPSV_Driver.JdbcDbpsvDriver") ;
|
JDBCドライバの使用方法の詳細については,JavaSoft提供のJDBC関連ドキュメントを参照してください。
Cosminexus DABroker Libraryで開発するアプリケーションは,DABrokerに接続してデータベースに接続します。DABrokerおよびデータベースは,次のどちらかの方法で設定してください。
- Driver.connectメソッドの直接呼び出し
- DriverManager.getConnectionメソッドの使用
同時に多数のユーザが接続するシステムの場合,ドライバマネージャを使用する接続方法では,ドライバマネージャ内で待ちが発生することがあります。多数のユーザが同時に接続することが想定されるシステムでは,Driver.connectメソッドの直接呼び出しの接続方法でアプリケーションを開発することをお勧めします。
- Driver.connectメソッドの直接呼び出しによる接続方法
次のように,Driverクラスのconnectメソッドを直接呼び出すことができます。
Driver drv = new JP.co.Hitachi.soft.DBPSV_Driver.JdbcDbpsvDriver();
Connection con = drv.connect(String url,Properties info);
|
- DriverManager.getConnectionメソッドの使用による接続方法
DABrokerとの接続は,DriverManager.getConnectionメソッドを使用します。引数のパターンは,次のどちらかです。
DriverManager.getConnection(String url,String user,String password);
DriverManager.getConnection(String url,Properties info);
|
次の表に,DriverManager.getConnectionメソッド,およびDriver.connectメソッドの引数の内容を示します。
表I-16 getConnectionメソッドおよびconnectメソッドの引数の内容
引数 |
設定内容 |
指定 |
String url |
データベースに接続するための各種情報の設定用URL構文(「付録I.4(3) データベースに接続するための各種情報の設定」参照) |
必須 |
String user |
データベース接続のユーザID※1 |
必須 |
String password |
データベース接続のパスワード※1 |
任意 |
Properties info |
データベース接続のユーザID※1
(キーワード:"user") |
必須 |
データベース接続のパスワード※1
(キーワード:"password") |
任意 |
アプリケーションの名称※2
(キーワード:"UAPNAME") |
任意 |
DABrokerからの受信データのバッファ長※3
(キーワード:"BUF_SIZE") |
任意 |
トレース取得の有無
(キーワード:"JDBC_IF,SV_EVENT,TRC_NO",
「付録I.4(4) トレースを取得するための情報の設定」参照) |
任意 |
エンコード文字形態※4
(キーワード:"ENCODELANG") |
任意 |
JDBCで取り扱うバッファ長※5
(キーワード:"ROW_SIZE") |
任意 |
OS認証機能使用の有無※6
(キーワード:"DAB_OSAUTH") |
任意 |
警告の保持※7
(キーワード:"SQLWARNING_IGNORE") |
任意 |
HiRDBのカーソルの保持※8
(キーワード:"HIRDB_CURSOR") |
任意 |
複数のパラメタセットの処理方法※9
(キーワード:"BLOCK_UPDATE") |
任意 |
Execute Direct機能使用の有無※10
(キーワード:"EXECUTE_DIRECT_MODE") |
任意 |
LONGVARBINARY型データアクセスモード※11
(キーワード:"LONGVARBINARY_ACCESS") |
任意 |
DABrokerからの受信データのバッファプール数※12
(キーワード:"BUF_POOL_SIZE") |
任意 |
- 注※1
- データベースに接続するためのユーザID,およびパスワードは,あらかじめデータベースに登録しておいてください。
- なお,ユーザIDだけを指定し,パスワードの指定を省略した場合でも,データベースに接続できます。ただし,ユーザIDの指定を省略し,パスワードだけを指定した場合は,データベースに接続できません(データベースの仕様に従っています)。
- 注※2
- 開発するアプリケーションを一意に識別するための名称です。DABrokerで取得する,アプリケーションとの通信トレースのPAPNAMEに使用されます。指定を省略した場合は,「DABroker for Java Version 2」が使用されます。
- アプリケーションの名称は,30バイト以内の文字列で指定してください。31バイト以上の文字列を指定した場合,31バイト以降は切り捨てられます。
- 注※3
- DABrokerからの受信データを格納するためのバッファ長を,キロバイト単位の数字文字列で指定します。BLOBデータなどの長大データを使用する場合,想定されるデータ長以上の値をこの項目に指定します。
- 指定値
- 1〜16000
- 指定を省略した場合,数字以外を指定した場合,または1より小さい値を指定した場合は64が仮定されます。16000より大きい値を指定した場合は16000が仮定されます。
- 値が仮定されたときは,Exceptionトレースログに値が仮定されたことを表すメッセージ(KFDJ01009-W)が出力されます。出力される契機はDriverManager.getConnectionメソッドなどでConnectionオブジェクトを取得するときです。メッセージについては,マニュアル「Cosminexus メッセージ3 KFCT/KFDB/KFDJ編」を参照してください。
- ただし,BUF_SIZEの上限が16,000キロバイトのため,BLOBデータなどの16,000キロバイトを超えるデータに一度にアクセスすることはできません。データベース種別がHiRDBの場合は,指定したバイト数を取り出すSTRING のインタフェース(BLOBデータの部分抽出機能)があるため,ここで指定したサイズ以下のサイズに分割して取り出してください。BLOBデータの部分抽出機能の詳細については,マニュアル「HiRDB UAP開発ガイド」,およびマニュアル「HiRDB SQLリファレンス」を参照してください。
- 注※4
- Stringクラスで文字変換に使用するエンコード文字形態を指定します。
- 指定値
- Javaがサポートしている文字エンコーディング:
- MS932など,指定したエンコード文字形態を使用します。
- OFF:
- JavaVMがサポートしている標準エンコードを使用します。
- 次にDABrokerの漢字コードセットの値とJDBC内のエンコーディングの対応を示します。
DABroker(UNIX)のDAB_LANGの値,またはDABroker(Windows)のDABLANGMODEの漢字コードセットの値 |
JDBC内の文字エンコーディング |
SJIS(シフトJIS)モード |
VMの標準エンコードを使用します。 |
EUCモード |
EUCJIS |
ASCIIモード |
8859_1 |
UTF-8モード |
UTF-8 |
- 指定を省略した場合,OFFが仮定されます。
- 注※5
- JDBCで取り扱うバッファ長を指定します。指定はメガバイト単位の数字文字列で指定します。利用するデータベースの1レコードの長さより大きい値を指定してください。
- 指定値
- 16〜512
- 指定を省略した場合,数字以外を指定した場合,または16より小さい値を指定した場合は16が仮定されます。
- 512より大きい値を指定した場合は512が仮定されます。
- 注※6
- OS認証機能を使用したデータベース接続をするかどうか指定します。
- 指定値
- TRUE :使用します。
- FALSE:使用しません。
- 指定を省略した場合は,FALSEが仮定されます。この指定は,Oracle9i 9.2.0に接続する場合だけ有効です。それ以外のバージョンのOracleに対して指定した場合は動作を保証しません。接続するデータベースがOracle以外の場合は,指定値に関係なく,OS認証機能を使用しません。
- 注※7
- データベースから返される警告を,Connectionクラスで保持するかどうかを指定します。
- 指定値
- TRUE :保持しません。
- FALSE:保持します。
- 指定を省略した場合は,FALSEが仮定されます。
- 注※8
- HiRDBでの検索時,カーソルが複数のCommitにわたって有効かどうかを指定します。
- 指定値
- TRUE:カーソルは保持されます。アプリケーションは,続けてFetchできます(LOCK TABLE UNTIL DISCONNECTが前提です)。
- FALSE:カーソルはクローズされます。
- 指定を省略した場合は,FALSEが仮定されます。Oracleでは,カーソルは常に複数のCommit,またはRollbackにわたって有効です。通常,Fetch時,DABrokerにFetchデータをバッファリングするため,Commit直後のFetchでエラーが発生するとは限りません。
- MetaDataを取得する場合,「TRUE」を指定してLOCK TABLE UNTIL DISCONNECTをしないで,複数のCommitにわたってFetchを行うとエラーが発生します。MetaDataを取得する場合は,「TRUE」を設定しないでください。
- MetaDataを取得する場合,「FALSE」,またはデフォルトの状態でResultSetのFetch実行中にCommitを実行するとエラーが発生します。
- この機能については,マニュアル「HiRDB SQLリファレンス」を参照してください。
- 注※9
- 接続データベースがHiRDBの場合,?パラメタを使用したデータベースの更新で,複数のパラメタセットを一度に処理するかどうかを指定します。
- 指定値
- TRUE :一度に処理します。
- FALSE:パラメタセットを一つずつ分割して処理します。
- 指定を省略した場合は,FALSEが仮定されます。この指定は,接続データベースがHiRDBのときだけ有効です。HiRDB以外のデータベースの場合は,常にパラメタセットを一つずつ分割して処理します。また,実際にパラメタセットが一度に処理されるかどうかは,DABrokerおよびHiRDBの仕様に従います。
- 注※10
- 接続データベースがHiRDBの場合,INSERT,UPDATE,DELETEなど,Statementクラスを使用したデータベースの更新でHiRDBのEXECUTE DIRECT機能を使用するかどうかを指定します。
- 指定値
- TRUE :EXECUTE DIRECT機能を使用します。
- FALSE:EXECUTE DIRECT機能を使用しません。
- 指定を省略した場合は,FALSEが仮定されます。この指定は,接続データベースがHiRDBのときだけ有効であり,HiRDB以外のデータベースの場合は,常にEXECUTE DIRECT機能を使用しません。
- 注※11
- LONGVARBINARY(列属性BLOB,列属性BINARY)のデータベースのアクセス方法を指定します。
- 指定値
- REAL:実データでアクセスします(デフォルト)。
- LOCATOR:HiRDBの位置づけ子(locator)機能を使用してアクセスします。
- 上記以外:「REAL」を指定したものとします。なお,次のどれかの場合,「LOCATOR」を指定しても「REAL」が指定されたとみなします。
- 接続先DBがHiRDB 以外
- 接続先DBであるHiRDBのHiRDBサーバ,またはHiRDBクライアントライブラリのバージョンが07-00以前
- LONGVARBINARY_ACCESSを指定した場合の注意事項を次に示します。
- BUF_SIZEとLONGVARBINARY_ACCESSを指定した場合
BUF_SIZEおよびLONGVARBINARY_ACCESSの指定によって,BLOB/BINARYデータの取得方法が変化します。BLOB/BINARYデータの取得方法については,「付録I.4(3)(b) URLに指定する各種情報」の「BLOB/BINARYデータの取得方法」を参照してください。
- 実行性能
LONGVARBINARY_ACCESSに「REAL」を指定すると,データベースへのアクセスは,ResultSet.nextまたはCallableStatement.execute実行時に1回行われるのに対し,「LOCATOR」を指定すると,ResultSet.nextまたはCallableStatement.execute実行時と,getBytesなどのデータを取得するメソッド実行時の2回行われます。そのため,「LOCATOR」を指定すると「REAL」を指定した場合に比べて性能が低下する場合があります。
- AUTOコミット
LONGVARBINARY_ACCESSが「LOCATOR」でかつ,AUTOコミットが有効の場合,ストアドプロシジャのBLOB/BINARY型出力パラメタを受け取れません(getBytesなどでデータを取得できません)。ストアドプロシジャの出力パラメタを受け取るにはAUTOコミットを無効にしてください。
- トランザクション終了後のデータ操作
LONGVARBINARY_ACCESSが「LOCATOR」の場合,SQLの実行結果取得(ResultSet.next,CallableStatement.execute)からデータ操作(Blob.getBytes,InputStream.readなど)までにトランザクションが終了すると,データ操作ができません。また,HIRDB_CURSORが「TRUE」であってもトランザクション終了後のデータ操作は実行できません。
そのため,データ操作はトランザクション終了前に行ってください。
- 注※12
- DABrokerからの受信データを格納するためのバッファプール数を設定します。指定しない場合は,0(デフォルト)が仮定されます。受信バッファプール数指定機能については,「9.10.8(2) 受信バッファプール数の指定」を参照してください。
- 指定値
- 0(デフォルト)
受信バッファプール数指定機能を使用しません。受信バッファをすべてプールします。
- 1〜1024
引数に指定された値を受信バッファプール数に設定します。ただし,接続するデータベースがHiRDBまたはORACLE以外の場合は,受信バッファプール数は1〜64になります。この場合,64より大きい値を指定しても64個までしかプールできません。
- 上記以外
0より小さい値を指定した場合,または数字以外を指定した場合は0が仮定されます。1024より大きい値を設定した場合は1024が仮定されます。
値が仮定されたときは,Exceptionトレースログにメッセージ(KFDJ01011-W)が出力されます。このメッセージが出力される契機はDriverManager.getConnectionメソッドなどでConnectionオブジェクトを取得するときです。メッセージについては,マニュアル「Cosminexus メッセージ3 KFCT/KFDB/KFDJ編」を参照してください。
ただし,SQLWarnningは作成されません。
(3) データベースに接続するための各種情報の設定
ここでは,DABrokerおよびデータベースの各種情報の設定について説明します。
(a) URLの指定形式
引数URLは,次の形式で指定します。
なお,任意に指定する項目については,[](角括弧)で示しています。
jdbc:hitachi:dbplib://DB =データベース種別[,DBID = データベースの接続情報][,DBENV = 接続先データベース定義情報][,DBHOST = データベース(HiRDB)のホスト名][,BUF_SIZE = 受信バッファ長][,ENCODELANG = 変換文字指定]
[,HIRDB_CURSOR = HiRDBカーソル動作モード]
|
- 必須の指定を省略した場合は,エラー(SQLExceptionをthrowする)となります。
- URLで指定する項目の中または項目の間でスペースを指定すると,指定値が無効となります。
(b) URLに指定する各種情報
各種情報に指定する内容を,次に示します。
●URLでの指定項目
表I-17 URLでの指定項目
各種情報 |
指定内容 |
データベース種別
(DB=) |
DABrokerから接続するデータベースの種別を指定します。
指定値:表I-18参照
指定は必須です。 |
データベースの
接続情報
(DBID=) |
接続するデータベース情報を指定します。
指定値:表I-19参照 |
接続先データベース定義情報
(DBENV=) |
DABrokerの接続先データベース定義情報を次の形式で指定します。
データベース種別名:データベース名
データベース種別がDABroker−Database Connection Serverの場合は,必ずこの項目を指定します。それ以外のデータベース種別の場合は,ここでの指定値は無視されます。 |
データベースのホスト名
(DBHOST=) |
データベースの種別にHiRDBを指定する場合,HiRDBのホスト名を指定します。なお,HiRDB以外のデータベースを指定する場合,ここでの指定値は無視されます。
指定値:ホスト名
指定は任意です。 |
受信バッファ長
(BUF_SIZE=) |
DABrokerからの受信データを格納するためのバッファ長を,キロバイト単位の数字文字列で指定します。BLOBデータなどの長大データを使用する場合,想定されるデータ長以上の値をこの項目に指定します。
指定値:1〜16000
指定を省略した場合,数字以外を指定した場合,または1より小さい値を指定した場合は64が仮定されます。16000より大きい値を指定した場合は16000が仮定されます。
値が仮定されたときは,Exceptionトレースログに値が仮定されたことを表すメッセージ(KFDJ01009-W)が出力されます。出力される契機はDriverManager.getConnectionメソッドなどでConnectionオブジェクトを取得するときです。メッセージについては,マニュアル「Cosminexus メッセージ3 KFCT/KFDB/KFDJ編」を参照してください。
ただし,BUF_SIZEの上限が16,000キロバイトのため,BLOBデータなどの16,000キロバイトを超えるデータに一度にアクセスすることはできません。データベース種別がHiRDBの場合は,指定したバイト数を取り出すSTRING のインタフェース(BLOBデータの部分抽出機能)があるため,ここで指定したサイズ以下のサイズに分割して取り出してください。BLOBデータの部分抽出機能の詳細については,マニュアル「HiRDB UAP開発ガイド」,およびマニュアル「HiRDB SQLリファレンス」を参照してください。 |
受信バッファプール数(BUF_POOL_SIZE) |
DABrokerからの受信データを格納するためのバッファプール数を設定します。指定しない場合は,0(デフォルト)が仮定されます。受信バッファプール数指定機能については,「9.10.8(2) 受信バッファプール数の指定」を参照してください。
指定値:
- 0(デフォルト)
- 受信バッファプール数指定機能を使用しません。受信バッファをすべてプールします。
- 1〜1024
- 引数に指定された値を受信バッファプール数に設定します。ただし,接続するデータベースがHiRDBまたはORACLE以外の場合は,受信バッファプール数は1〜64になります。この場合,64より大きい値を指定しても64個までしかプールできません。
- 上記以外
- 0より小さい値を指定した場合,または数字以外を指定した場合は0が仮定されます。1024より大きい値を設定した場合は1024が仮定されます。
値が仮定されたときは,Exceptionトレースログにメッセージ(KFDJ01011-W)が出力されます。このメッセージが出力される契機はDriverManager.getConnectionメソッドなどでConnectionオブジェクトを取得するときです。メッセージについては,マニュアル「Cosminexus メッセージ3 KFCT/KFDB/KFDJ編」を参照してください。
ただし,SQLWarnningは作成されません。 |
変換文字指定
(ENCODELANG=) |
Stringクラスで文字変換に使用するエンコード文字形態を指定します。
指定値:Javaがサポートしている文字エンコーディング(MS932など),またはOFF(JavaVMがサポートしている標準エンコードを使用します)
指定は任意です。指定を省略した場合,OFFが仮定されます。 |
HiRDBカーソル動作モード
(HIRDB_CURSOR=) |
HiRDBでの検索時,カーソルが複数のCommitにわたって有効かどうかを指定します。
指定値:
- TRUE
- カーソルは保持されます。アプリケーションは,続けてFetchできます(LOCK TABLE UNTIL DISCONNECTが前提です)。
- FALSE
- カーソルはクローズされます。
指定を省略した場合は,FALSEが仮定されます。Oracleでは,カーソルは常に複数のCommit,またはRollbackにわたって有効です。通常,Fetch時,DABrokerにFetchデータをバッファリングするため,Commit直後のFetchでエラーが発生するとは限りません。
MetaDataを取得する場合,「TRUE」を指定してLOCK TABLE UNTIL DISCONNECTをしないで,複数のCommitにわたってFetchを行うとエラーが発生します。MetaDataを取得する場合は,「TRUE」を設定しないでください。
MetaDataを取得する場合,「FALSE」またはデフォルトの状態で,ResultSetのFetch実行中にCommitを実行するとエラーが発生します。
接続データベースがHiRDBで検索SQL(SELECT文)に「UNTIL DISCONNECT」を記述した場合は,「TRUE」を指定するか,DataSourceクラスのsetHiRDBCursorModeメソッドで「true」を設定してください。設定しない場合,Commitをわたった検索中のResultSetクラスオブジェクトに対してcloseメソッドを実行してもカーソルをクローズしません。
この機能を使用する場合,マニュアル「HiRDB SQLリファレンス」を参照してください。 |
●データベースの指定値
表I-18 データベース種別の指定値
データベース種別 |
データベース種別の指定値 |
Oracle |
oracleまたはORACLE |
Oracle8i※ |
oracle8iまたはORACLE8I |
HiRDB |
hirdbまたはHIRDB |
- 注
- 指定値の文字列は,大文字,小文字のどちらでもかまいません。
- 「=」の前後に,空白またはタブ文字を指定した場合は,エラー(SQLExceptionをthrowする)となります。
- 注※
- データベース種別にOracle8iの指定値を指定して,DABroker環境設定の「使用するOracleのバージョン」にOracle9iを指定した場合はOracle9iに,Oracle10gを指定した場合はOracle10gに接続できます。
表I-19 データベースの接続情報の指定値
データベース種別 |
データベースの接続情報の指定内容 |
指定の省略可否 |
Oracle |
SQL*Netの接続文字列※1 |
任意※1 |
Oracle8i |
HiRDB |
HiRDBのシステムポート番号※1※2 |
任意※1 |
- 注
- 「=」の前後に,空白またはタブ文字を指定した場合は,エラー(SQLExceptionをthrowする)となります。
- 「DB=データベース種別」との区切りに「,(コンマ)」を使用します。
- 「,(コンマ)」を2回以上指定した場合は,最後の「,(コンマ)」以降がデータベースの接続情報の指定となります。
- データの区切りに「,(コンマ)」以外のキーを使用した場合は,データベース接続情報の指定は無効となります。
- 注※1
- 指定を省略する場合は,DABrokerの動作環境定義ファイルでの指定が有効になります。
- 注※2
- HiRDBクライアントの環境変数グループ名を指定する場合は,グループ名の先頭に@を付加します。
- (例1)
- Windowsの場合
- HiRDBクライアントの環境変数グループ名がHiRDB_ENV_GROUPのときは,次のように指定します。
- DBID=@DABENVGRP=HiRDB_ENV_GROUP
- (例2)
- UNIXの場合
- HiRDBクライアントの環境変数グループ名のパスが/HiRDB_P/Client/HiRDB.iniのときは,次のように指定します。
- DBID=@DABENVGRP=/HiRDB_P/Client/HiRDB.ini
- DBID=@DABENVGRP=<環境変数グループ名>を指定する場合は,指定内容に半角の空白を含めないでください。指定内容が次に示す例のどれかに該当する場合,DBIDは正しく設定されません。
- (例)
- DBID=@DABENVGRP=<環境変数グループ名>の指定内容に半角スペースを含みます。OSはWindowsで,環境変数グループ名はHiRDB_ENV_GROUPとします。
- 半角の空白を△で示します。
- DBID△=@DABENVGRP=HiRDB_ENV_GROUP
- DBID=△@DABENVGRP=HiRDB_ENV_GROUP
- DBID=@△DABENVGRP=HiRDB_ENV_GROUP
- DBID=@DABENVGRP△=HiRDB_ENV_GROUP
- DBID=@DABENVGRP=△HiRDB_ENV_GROUP
- DBID=@DABENVGRP=HiRDB_ENV_GROUP△
●BLOB/BINARYデータの取得方法
LONGVARBINARY_ACCESSを指定した場合の各メソッド実行時の動作を次に示します。
- 接続先データベースにHiRDBを指定した場合
表I-20 BLOB/BINARYデータの取得方法(1)
指定値 |
CallableStatement.execute
および
ResultSet.next |
CallableStatement.getBytes
および
ResultSet.getBytes |
Blob.getBytes |
REAL |
BLOB/BINARYデータの全体を接続先データベースから取得します。 |
ResultSet.nextで取得したBLOB/BINARYデータを使用します。 |
ResultSet.nextで取得したBLOB/BINARYデータから,引数で指定された範囲を切り出して取得します。 |
LOCATOR |
BLOB/BINARYデータの全体ではなく,接続先データベース内のBLOB/BINARYデータを示すロケータを取得します。 |
BLOB/BINARYデータの全体を接続先データベースからBUF_SIZE×1,024バイト単位に分割して取得します。 |
引数で指定された範囲のBLOB/BINARYデータを接続先データベースからBUF_SIZE×1,024バイト単位に分割して取得します。 |
表I-21 BLOB/BINARYデータの取得方法(2)
指定値 |
CallableStatement.getBinaryStream
および
ResultSet.getBinaryStreamBlob.getBinaryStream |
Blob.length |
Blob.position |
REAL |
getBinaryStreamによって取得したInputStreamのreadメソッドを実行した場合,ResultSet.nextで取得したBLOB/BINARYデータから抽出して取得します。 |
ResultSet.nextメソッドで取得したBLOB/BINARYデータから,データ長を取得します。 |
ResultSet.nextで取得したBLOB/BINARYデータから,検索パターンに一致する位置を取得します。 |
LOCATOR |
getBinaryStreamによって取得したInputStreamのreadメソッドを実行した場合,接続先データベースからデータを取得します。 |
接続先データベースからデータ長を取得します。 |
接続先データベースから,検索パターンに一致する位置を取得します。 |
表I-22 BLOB/BINARYデータの取得方法(3)
指定値 |
InputStream.available※ |
InputStream.skip※ |
REAL |
ロケータの示す実データの長さ以下の値を返します。 |
ロケータの示す実データの長さ以下の値を返します。 |
LOCATOR |
BUF_SIZE×1,024バイト以下の値を返します。 |
BUF_SIZE×1,024バイト以下の値を返します。 |
- 注※
- CallableStatement.getBinaryStream,ResultSet.getBinaryStream,またはBlob.getBinaryStreamで取得したInputStreamです。
- 接続先データベースにOracleを指定した場合
表I-23 BLOB/BINARYデータの取得方法(4)
指定値 |
CallableStatement.execute
および
ResultSet.next |
CallableStatement.getBytes
および
ResultSet.getBytes |
Blob.getBytes |
REAL |
BLOB/BINARYデータの全体を接続先データベースからBUF_SIZE ×1,024バイト単位に分割して取得します。 |
ResultSet.nextで取得したBLOB/BINARYデータを使用します。 |
ResultSet.nextで取得したBLOB/BINARYデータから,引数で指定された範囲を切り出して取得します。 |
LOCATOR |
表I-24 BLOB/BINARYデータの取得方法(5)
指定値 |
CallableStatement.getBinaryStream
および
ResultSet.getBinaryStreamBlob.getBinaryStream |
Blob.length |
Blob.position |
REAL |
ResultSet.nextで取得したBLOB/BINARYデータを使用します。 |
ResultSet.nextで取得したBLOB/BINARYデータから,データ長を取得します。 |
ResultSet.nextで取得したBLOB/BINARYデータから,検索パターンに一致する位置を取得します。 |
LOCATOR |
表I-25 BLOB/BINARYデータの取得方法(6)
指定値 |
InputStream.available※ |
InputStream.skip※ |
REAL |
ロケータの示す実データの長さ以下の値を返します。 |
ロケータの示す実データの長さ以下の値を返します。 |
LOCATOR |
- 注※
- CallableStatement.getBinaryStream,ResultSet.getBinaryStream,またはBlob.getBinaryStreamで取得したInputStreamです。
JDBCドライバでは,次のトレースを取得できます。トレースの出力内容については,マニュアル「Cosminexus システム運用ガイド」を参照してください。
- JDBCインタフェースメソッドトレース
- DABrokerとのイベントトレース
(a) トレースの取得および出力ストリームの設定方法
次の項目を指定して,トレースの取得を設定してください。次の項目が指定されていない場合は,トレースを取得できません。
- DriverManager.getConnectionメソッドまたはDriver.connectメソッドの引数Properties infoでのトレース取得有無の指定
- DriverManager.setLogWriterメソッドでの,トレースの出力ストリームの指定
1.のProperties infoで指定する値を次の表に示します。1.のメソッドと引数については,「付録I.4(3) データベースに接続するための各種情報の設定」を参照してください。
表I-26 トレースを取得するための指定値
トレースの種類
およびトレース関連項目 |
Properties infoの
キーワード |
Properties infoの値 |
JDBCインタフェースメソッド
トレース※1 |
JDBC_IF |
指定値
ON:トレースを取得する
OFF:トレースを取得しない |
DABrokerとのイベント
トレース※1 |
SV_EVENT |
指定値
ON:トレースを取得する
OFF:トレースを取得しない |
各トレースのエントリ数※2 |
TRC_NO |
デフォルト値
500(エントリ)
指定範囲
10〜1000(エントリ) |
- 注※1
- ONまたはOFF以外の値を指定した場合は「トレースを取得しない」設定となります。
- 注※2
- 数字以外の値を指定した場合は「トレースを取得しない」設定となります。
(b) 指定したストリームへの出力タイミング
トレースは,各トレースのエントリ数分,JDBCドライバで保持されます。
保持されたトレースは,次のタイミングでDriverManager.setLogWriterメソッドで指定した出力ストリームに出力されます。
- Connection.Closeメソッドの呼び出し(正常終了時)
- エラー発生時(SQLExceptionのthrow時)
(c) JDBCドライバでのトレース取得時の注意事項
- JDBCドライバは,JDBCドライバ内でトレース情報の数がエントリ数を超えた場合は,トレースの古い順にトレース情報を上書きします。
- JDBCインタフェースメソッドトレース(キーワード:JDBC_IF)は,EntryおよびReturnでそれぞれ1エントリのトレース領域を使用します。
- DABrokerとのイベントトレース(キーワード:SV_EVENT)は,送信または受信イベントでそれぞれ1エントリのトレース領域を使用します。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.