スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
DriverManagerクラスのgetConnectionメソッドには,引数が異なる次の三つの形式があります。
これらのメソッドの引数(url,user,password,及びinfo)には,HiRDBへの接続に必要な接続情報を指定します。
正常にHiRDBに接続した場合,JDBCドライバはこれらのメソッドを呼び出した結果として,Connectionクラスのインスタンスの参照を返却します。ただし,次の場合には,これらのメソッドはSQLExceptionを投入します。
getConnectionメソッドの引数の指定内容を次の表に示します。
表18-1 getConnectionメソッドの引数の指定内容
引数 | 指定内容 | 外部ドライバ※1 | 内部ドライバ※2 |
---|---|---|---|
String url | URLを指定します。詳細については,「(1) URLの構文」を参照してください。 | ○ | ○ |
String user | 認可識別子を指定します。 指定値がナル値の場合は,認可識別子の指定がないものとみなされます。長さ0の文字列の場合は,SQLExceptionを投入し,KFPJ20212-Eメッセージの埋字となる"aa....aa"には"user"が設定されます。 指定の優先順位については,「18.11 接続情報の優先順位」を参照してください。 |
○ | × |
String password | パスワードを指定します。指定の優先順位については,「18.11 接続情報の優先順位」を参照してください。 指定値がナル値,又は長さ0の文字列の場合は,パスワードの指定がないものとみなされます。 |
○ | × |
Properties info | 各種接続情報を指定します。詳細については,「(2) ユーザプロパティ」を参照してください。 | ○ | ○ |
JDBCドライバで指定できるURLの構文について説明します。
なお,URL内の各項目及び項目間にはスペースを入れないでください。また,各項目名称の大文字と小文字を区別するため,注意してください。
jdbc:hitachi:hirdb[://[DBID=接続付加情報] [,DBHOST=DBホスト名称] [,ENCODELANG=変換文字セット] [,HIRDB_CURSOR=カーソル動作モード] [,STATEMENT_COMMIT_BEHAVIOR=ステートメントのコミット実行後の状態] [,JDBC_IF=JDBCインタフェースメソッドトレースの取得の有無] [,TRC_NO=トレースのエントリ数] [,SQLWARNING_IGNORE=警告情報を保持するかどうか] [,LONGVARBINARY_ACCESS=BLOB型,BINARY型のアクセス方法] [,SQL_IN_NUM=?パラメタ数] [,SQL_OUT_NUM=出力パラメタ数] [,SQLWARNING_LEVEL=警告保持レベル] [,LONGVARBINARY_ACCESS_SIZE=LONGVARBINARYデータアクセスサイズ] [,MAXBINARYSIZE=LONGVARBINARYデータの最大長] [,LONGVARBINARY_TRUNCERROR=例外を投入するかどうか] [,HiRDB_INI=HiRDB.INIファイルのディレクトリパス] [,USER=ユーザ名称] [,PASSWORD=パスワード] [,UAPNAME=アプリケーション名称] [,BATCHEXCEPTION_BEHAVIOR=JDBC規格に準拠した更新カウントを設定するか どうか] ] |
@△HIRDBENVGRP=/HiRDB_P/Client/HiRDB.ini @HIRDBENVGRP△=/HiRDB_P/Client/HiRDB.ini @HIRDBENVGRP=△/HiRDB_P/Client/HiRDB.ini @HIRDBENVGRP=/HiRDB_P/Client/HiRDB.ini△ |
表18-2 HiRDBの文字コードと対応する変換文字セット
HiRDBの文字コード (pdntenv又はpdsetupコマンドで設定した文字コード) |
指定する変換文字セット |
---|---|
lang-c | ISO8859_1 |
sjis | SJIS又はMS932※ |
ujis | EUC_JP |
utf-8 | UTF-8 |
chinese | EUC_CN |
chinese-gb18030 | GB18030 |
HIRDB_CURSOR及びSTATEMENT_COMMIT_BEHAVIOR指定時の注意事項を次に示します。
PreparedStatement pstmt1 = con.prepareStatement("lock table tb1"); PreparedStatement pstmt2 = con.prepareStatement("lock table tb2"); pstmt1.execute(); //エラーになりません。 con.commit(); pstmt2.execute(); //エラーになります。 pstmt1.close(); pstmt2.close(); |
プロシジャが返却する結果集合 | HIRDB_CURSORの設定値 | |
---|---|---|
TRUE | FALSE | |
ホールダブルカーソルである | コミット後も使用可能 | コミット後の操作でデータベースアクセスを伴う場合はエラーとなる※ |
ホールダブルカーソルでない | コミット後の操作でデータベースアクセスを伴う場合はエラーとなる | コミット後の操作でデータベースアクセスを伴う場合はエラーとなる |
表18-3 コミット実行後のResultSetオブジェクト及びステートメントオブジェクトの状態
STATEMENT_COMMIT_BEHAVIORの指定値 | HIRDB_CURSORの指定値 | |
---|---|---|
TRUE | FALSE | |
TRUE |
|
|
FALSE |
|
表18-4 DatabaseMetaDataのメソッドの戻り値
STATEMENT_COMMIT_BEHAVIORの指定値 | HIRDB_CURSORの指定値 | |
---|---|---|
TRUE | FALSE | |
TRUE |
|
|
FALSE |
|
[A] pstmt1=con.prepareStatement("select c1 from tb1"); [1] [B] rs1=pstmt1.executeQuery(); [2] [C] rs1.next() [3] [D] v1=rs1.getInt(1) [4] [E] rs1.next() [5] [F] v1=rs1.getInt(1) [6] [G] rs1.close() [7] |
コミットのタイミング | H=T,S=T※1 | H=F,S=T※2 | H=F,S=F※3 |
---|---|---|---|
[A] | [1]~[7]は正常に動作します。 | ||
[B] | [1]~[7]は正常に動作します。 | [1],[2],[7]:正常に動作します。 [3]~[6]:SQLExceptionを投入します。 |
|
[C] | [1]~[7]は正常に動作します。 | [1],[2],[7]:正常に動作します。 [3]~[6]:SQLExceptionを投入します。 |
|
[D] | [1]~[7]は正常に動作します。 | [1]~[3],[7]:正常に動作します。 [4]~[6]:SQLExceptionを投入します。 |
|
[E] | [1]~[7]は正常に動作します。 | [1]~[4],[7]:正常に動作します。 [5],[6]:SQLExceptionを投入します。 |
|
[F] | [1]~[7]は正常に動作します。 | [1]~[5],[7]:正常に動作します。 [6]:SQLExceptionを投入します。 |
|
[G] | [1]~[7]は正常に動作します。 |
DriverManagerクラスのgetConnectionメソッドに指定できるプロパティを次の表に示します。なお,プロパティの指定値がナル値の場合,指定を省略したものとして扱われます。
表18-5 getConnectionメソッドに指定できるプロパティ
項番 | プロパティ | 指定内容 |
---|---|---|
(a) | user | 認可識別子 |
(b) | password | パスワード |
(c) | UAPNAME | UAP識別子 |
(d) | JDBC_IF | JDBCインタフェースメソッドトレースの取得の有無 |
(e) | TRC_NO | JDBCインタフェースメソッドトレースのエントリ数 |
(f) | ENCODELANG | 接続先のHiRDBの文字コードに対応する変換文字セット |
(g) | SQLWARNING_IGNORE | データベースから返される警告をConnectionオブジェクトで保持するかどうか |
(h) | HIRDB_CURSOR | カーソル動作モード |
(i) | LONGVARBINARY_ACCESS | JDBC SQLタイプLONGVARBINARY(HiRDBのデータ型であるBLOB型,及びBINARY型)のデータへのアクセス方法 |
(j) | HiRDB_for_Java_SQL_IN_NUM | 実行するSQLの入力?パラメタの最大数 |
(k) | HiRDB_for_Java_SQL_OUT_NUM | 実行するSQLの出力項目の最大数 |
(l) | HiRDB_for_Java_SQLWARNING_LEVEL | SQL実行時に発生した警告情報の保持レベル |
(m) | HiRDB_for_Java_ENV_VARIABLES | HiRDBクライアント環境変数 |
(n) | HiRDB_for_Java_STATEMENT_COMMIT_BEHAVIOR | ステートメントのコミット実行後の状態 |
(o) | HiRDB_for_Java_LONGVARBINARY_ACCESS_SIZE | HiRDBサーバに対して一度に要求するJDBC SQLタイプLONGVARBINARY型データの長さ |
(p) | HiRDB_for_Java_MAXBINARYSIZE | JDBC SQLタイプLONGVARBINARY型データ取得時のデータサイズの上限 |
(q) | HiRDB_for_Java_LONGVARBINARY_TRUNCERROR | JDBC SQLタイプLONGVARBINARY型データ取得時に切り捨てが発生した場合に,例外を投入するかどうか |
(r) | HiRDB_for_Java_DBID | 接続付加情報 |
(s) | HiRDB_for_Java_DBHOST | ホスト名称 |
(t) | HiRDB_for_Java_HiRDB_INI | HiRDB.INIファイルのディレクトリパス |
(u) | HiRDB_for_Java_BATCHEXCEPTION_BEHAVIOR | JDBC規格に準拠した更新カウントを設定するかどうか |
認可識別子を指定します。
指定値がナル値の場合は,認可識別子の指定がないものとみなされます。長さ0の文字列の場合は,SQLExceptionを投入します。
この指定を省略した場合,getConnectionメソッドの引数Properties中の,HiRDB_for_Java_ENV_VARIABLESで指定したHiRDBクライアント環境定義のPDNAMEPORT,又はURL中のDBIDに指定したHiRDB環境変数グループ内のPDUSERの指定値が有効となります。指定の優先順位については,「18.11 接続情報の優先順位」を参照してください。
どちらも指定されていない場合は,getConnectionメソッド実行時にSQLExceptionを投入します。
なお,内部ドライバの場合は,このプロパティの指定は無効です。
パスワードを指定します。
指定値がナル値の場合又は長さが0の場合は,パスワードの指定がないものとみなされます。
この指定を省略した場合については,「18.11 接続情報の優先順位」を参照してください。
なお,内部ドライバの場合は,このプロパティの指定は無効です。
HiRDBサーバに対してアクセスする,UAPの識別情報(UAP識別子)を指定します。
次の場合は,認可識別子の指定がないものとみなされます。
指定できる文字列の詳細については,「6.6.4 クライアント環境定義の設定内容」のクライアント環境定義PDCLTAPNAMEを参照してください。
この指定を省略した場合については,「18.11 接続情報の優先順位」を参照してください。
なお,内部ドライバの場合は,このプロパティの指定は無効です。
JDBCインタフェースメソッドトレースの取得の有無を指定します。
この指定を省略した場合,OFFが仮定されます。
また,これらの値以外を指定すると,SQLExceptionを投入します。
なお,次に示す場合,このプロパティの指定は無効です。
JDBCインタフェースメソッドトレースの詳細は,「18.14 JDBCインタフェースメソッドトレース」を参照してください。
~<符号なし整数>((10~1000))《500》
JDBCインタフェースメソッドトレースのエントリ数を指定します。
このプロパティは,次の条件をすべて満たしている場合に有効になります。
なお,内部ドライバの場合は,このプロパティの指定は無効です。
プロパティの指定が有効な状態で,かつ指定値が不正な場合は,SQLExceptionを投入します。
JDBCインタフェースメソッドトレースの詳細は,「18.14 JDBCインタフェースメソッドトレース」を参照してください。
StringクラスでHiRDBとのデータ受け渡しをする場合に,接続先のHiRDBの文字コードに対応する変換文字セットを指定します。
指定できる変換文字セットは,「JavaTM 2 SDK, Standard Editionドキュメント」の「国際化」で示されるエンコーディング一覧から選択してください。
HiRDBの文字コードと対応する変換文字セットは,「表18-2 HiRDBの文字コードと対応する変換文字セット」を参照してください。
OFFを指定すると,HiRDBの文字コードに対して「表18-2 HiRDBの文字コードと対応する変換文字セット」の変換文字セットが指定されたものとして動作します。なお,HiRDBの文字コードがsjisの場合,JDBCドライバが動作するOSによって変換文字セットは次のようになります。
また,OFF以外の指定値は大文字と小文字を区別するため,注意してください。
Java仮想マシンがサポートしていない変換文字セット名称を指定した場合は,HiRDBサーバとの接続時にSQLExceptionを投入します。
この指定を省略した場合,JDBCドライバはURL中のENCODELANGで指定した変換文字セットで文字の変換をします。
データベースから返される警告をConnectionオブジェクトで保持するかどうかを指定します。
この指定を省略した場合,URL中のSQLWARNING_IGNOREで指定した値が有効になります。TRUE又はFALSE以外を指定すると,SQLExceptionを投入します。
Connectionオブジェクトの警告保持は,このプロパティと,HiRDB_for_Java_SQLWARNING_LEVELの指定値で決定します。警告保持レベルについては,「18.4.12(2)(b) SQLWarningオブジェクトの生成条件」を参照してください。なお,このプロパティでは,指定した内容について大文字と小文字を区別しません。
HiRDBがコミットした場合に,ResultSetクラスのオブジェクトを有効とするかどうか(カーソル動作モード)を指定します。
この指定を省略した場合,URL中のHIRDB_CURSORで指定した値が有効になります。TRUE又はFALSE以外を指定すると,SQLExceptionを投入します。
また,無効となったResultSetオブジェクトでcloseメソッド呼び出し以外の操作をした場合,SQLExceptionを投入します。
JDBC SQLタイプLONGVARBINARY(HiRDBのデータ型であるBLOB型,及びBINARY型)のデータへのアクセス方法を指定します。
この指定を省略した場合,REALが仮定されます。
また,これらの値以外を指定すると,SQLExceptionを投入します。
表18-6 BLOB型又はBINARY型データ(HiRDBのデータ型)の取得方法の違い
実行メソッド | LONGVARBINARY_ACCESSの指定値※1 | ||
---|---|---|---|
REAL | LOCATOR | ||
CallableStatment.execute ResultSet.next |
BLOB型又はBINARY型データの全体を,接続先DBから取得します。 | BLOB型又はBINARY型データの全体ではなく,接続先DB内のBLOB型又はBINARY型データを示す位置付け子を取得します。 | |
CallableStatement.getBytes CallableStatement.getString CallableStatement.getObject ResultSet.getBytes ResultSet.getString ResultSet.getObject |
ResultSet.nextで取得したBLOB型又はBINARY型データを使用します。 | BLOB型又はBINARY型データの全体を,接続先DBからACCESSSIZE×1024バイト単位に分割して取得します。 | |
Blob.getBytes | ResultSet.nextで取得したBLOB型又はBINARY型データから,引数で指定された範囲を切り出して取得します。 | 引数で指定された範囲のBLOB型又はBINARY型データを,接続先DBからACCESSSIZE×1024バイト単位に分割して取得します。 | |
CallableStatement.getBinaryStream ResultSet.getBinaryStream ResultSet.getAsciiStream ResultSet.getUnicodeStream Blob.getBinaryStream |
実行メソッドによって取得したInputStreamのreadメソッドを実行した場合,ResultSet.nextで取得したBLOB型又はBINARY型データから抽出して取得します。 | 実行メソッドによって取得したInputStreamのreadメソッドを実行した場合,接続先DBからデータを取得します。 | |
Blob.length | ResultSet.nextで取得したBLOB型又はBINARY型データからデータ長を取得します。 | 接続先DBからデータ長を取得します。 | |
Blob.position | ResultSet.nextで取得したBLOB型又はBINARY型データから,検索パターンに一致する位置を取得します。 | 接続先DBから,検索パターンに一致する位置を取得します。 | |
CallableStatement.getBinaryStream,ResultSet.getBinaryStream,Blob.getBinaryStreamで取得したInputStream | InputStream.available | 位置付け子が示す実データの長さ以下の値を返却します。 | ACCESSSIZE×1024バイト以下の値を返却します。 |
InputStream.skip | 位置付け子が示す実データの長さ以下までの範囲で読み飛ばします。 | 最大ACCESSSIZE×1024バイト以下で読み飛ばします。 | |
CallableStatement.getCharcterStream ResultSet.getCharcterStream |
getCharcterStreamによって取得したReaderのreadメソッドを実行した場合,ResultSet.nextで取得したBLOB型又はBINARY型データから抽出して取得します。 | getCharcterStreamによって取得したReaderのreadメソッドを実行した場合,接続先DBからデータを取得します。 |
~<符号なし整数>((1~30000))《300》
実行するSQLの入力?パラメタの最大数を指定します。
この指定は,SQLの前処理時に取得する入力?パラメタ情報の数となります。実際の入力?パラメタの数がこのプロパティの指定値よりも多い場合,JDBCドライバはSQLの前処理の後にHiRDBサーバから入力?パラメタ情報を取得します。
指定値が不正な場合は,SQLExceptionを投入します。
~<符号なし整数>((1~30000))《300》
この指定は,SQLの前処理時に取得する出力項目情報の数となります。実際の出力項目情報の数がこのプロパティの指定値よりも多い場合,JDBCドライバはSQLの前処理の後にHiRDBサーバから出力項目情報を取得します。
指定値が不正な場合は,SQLExceptionを投入します。
SQL実行時に発生した警告情報の保持レベルを指定します。警告情報の保持レベルの詳細については,「18.4.12(2)(b) SQLWarningオブジェクトの生成条件」を参照してください。
この指定を省略した場合,"SQLWARN"が仮定されます。
指定値が不正な場合は,SQLExceptionを投入します。
HiRDBクライアント環境定義を指定します。次のように指定してください。
変数名=値;変数名=値; ..<省略>.. ;変数名=値 |
JDBCドライバで指定できるクライアント環境定義は,「18.10 指定できるクライアント環境定義」を参照してください。変数名にJDBCドライバで指定できないクライアント環境定義が指定された場合,指定を無視します。なお,変数名は大文字と小文字を区別するため,注意してください。
複数の設定方法を持つ接続情報の優先順位については,「18.11 接続情報の優先順位」を参照してください。
java.util.Properties prop; prop=new java.util.Properties(); prop.setProperty("HiRDB_for_Java_ENV_VARIABLES", "PDFESHOST=FES1;PDCWAITTIME=0");
HiRDBがコミットした場合に,ステートメントのオブジェクトをコミット実行後も有効とするかどうかを指定します。
この指定を省略した場合,URL中のSTATEMENT_COMMIT_BEHAVIORで指定した値が有効になります。
~<符号なし整数>((0~2097151))《0》(単位:キロバイト)
HiRDBサーバに対して一度に要求するJDBC SQLタイプLONGVARBINARY型データの長さを指定します。LONGVARBINARY_ACCESSでLOCATOR以外を指定している場合,この指定は無効です。
例えば,このプロパティに20を指定した場合,データベースに格納している100キロバイトのJDBC SQLタイプLONGVARBINARY型データをResultSetのgetBytesメソッドで取得しようとすると,JDBCドライバはデータを20キロバイトずつ5回に分けて取得し,返却します。0の場合はデータ全体を一度に要求します。
指定値が不正な場合は,SQLExceptionを投入します。
~<符号なし整数>((0~2147483647))(単位:バイト)
JDBC SQLタイプLONGVARBINARY型データ取得時のデータサイズの上限を指定します。
JDBC SQLタイプLONGVARBINARY型データを取得する際,JDBCドライバはデータを取得するまで実際のデータ長を認識できないため,定義長分のメモリを確保します。そのため,定義長にHiRDBのデータ型であるBINARY型又はBLOB型の最大長である2,147,483,647バイトのように長大なサイズを指定した列の値を取得する場合は,その定義長である2,147,483,647バイトのメモリを確保しようとします。そのため,実行環境によってはメモリ不足が発生することがあります。
したがって,このプロパティで,実際に格納されているデータの最大長を指定してください。取得対象となるHiRDBのデータ型であるBINARY型又はBLOB型データの定義長が,このプロパティで指定したサイズよりも大きい場合,取得データをこのプロパティで指定したサイズに切り捨てます。実際にデータを切り捨てた場合,ResultSetのnextメソッド実行時に,JDBCドライバはHiRDBサーバから警告を受け取ります。受け取った警告に対しては,setLONGVARBINARY_TruncErrorの指定値に従ってSQLExceptionの投入,SQLWarningの生成(又は無視)をします。
このプロパティで上限を設定していない場合は,取得対象データの定義長を上限とします。
指定値が不正な場合は,SQLExceptionを投入します。
JDBC SQLタイプLONGVARBINARY型データ取得時に切り捨てが発生した場合に,例外を投入するかどうかを指定します。
この指定を省略した場合,TRUEが仮定されます。
HiRDB_for_Java_SQLWARNING_LEVELにIGNOREを指定している場合は,FALSEが指定されたものとして動作します。
なお,JDBC SQLタイプLONGVARBINARY型データ取得時に発生する切り捨てとは,次の条件を満たしている場合を指します。
SQLの実行で得られるJDBC SQLタイプLONGVARBINARY型データの実際の長さ > HiRDB_for_Java_MAXBINARYSIZEで指定したデータ長 |
HiRDBのポート番号(PDNAMEPORTに当たる情報),又はHiRDBクライアントの環境変数グループファイル名を指定します。この指定の詳細については,「18.2.2(1)(b) URLの各項目の説明」のDBIDの説明を参照してください。
HiRDBのホスト名称を指定します。この指定の詳細については,「18.2.2(1)(b) URLの各項目の説明」のDBHOSTの説明を参照してください。
HiRDB.INIファイル内に記述されているHiRDBクライアント環境変数を有効にする場合に,HiRDB.INIファイルが存在するディレクトリの絶対パスを指定します。ここで指定したディレクトリのHiRDB.iniファイルのHiRDBクライアント環境変数が有効になります。指定したディレクトリにHiRDB.iniファイルがない場合,及び内部ドライバの場合,この指定は無効になります。
また,この指定を省略した場合,URL中の項目HiRDB_INIの指定値が仮定されます。URL中に指定がない場合は,このファイルの内容を無視します。
java.sql.BatchUpdateExceptionのgetUpdateCountsメソッドの戻り値に,JDBC規格に準拠した更新カウントを設定するかどうかを指定します。
なお,このプロパティの指定は,接続先がバージョン08-02以降のHiRDBの場合に有効です。
FALSE:HiRDB独自の更新カウントを設定します。
このプロパティは,指定した内容について大文字と小文字を区別しません。
また,この指定を省略した場合,URL中の項目BATCHEXCEPTION_BEHAVIORの指定値が有効になります。URL中に指定がない場合は,TRUEが指定されたものとして動作します。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.