Hitachi

ノンストップデータベース HiRDB Version 9 UAP開発ガイド


17.4.2 Connectionインタフェース

〈この項の構成〉

(1) 概要

Connectionクラスでは,主に次の機能が提供されます。

(2) メソッド

Connectionインタフェースのメソッド一覧を次の表に示します。なお,表に記載されていないメソッドはサポートしていません。サポートしていないメソッドを指定すると,SQLExceptionを投入します。

表17‒12 Connectionインタフェースのメソッド一覧

メソッド

提供ドライバ

機能

JDBC2.0

JDBC4.0

clearWarnings()

このConnectionオブジェクトに関して通知されたすべての警告をクリアします。

close()

HiRDBとの接続を切断します。

commit()

直前のコミット又はロールバック以降に行われた変更を,すべて有効とします。

createStatement()

SQL文をデータベースに送るためのStatementオブジェクトを生成します。

createStatement(int resultSetType, int resultSetConcurrency)

SQL文をデータベースに送るためのStatementオブジェクトを生成します。

createStatement(int resultSetType,int resultSetConcurrency, int resultSetHoldability)

SQL文をデータベースに送るためのStatementオブジェクトを生成します。

getAutoCommit()

このConnectionオブジェクトでの現在の自動コミットモードを取得します。

getCatalog()

このConnectionオブジェクトの現在のカタログ名を取得します。

getHoldability()

このConnectionオブジェクトを使用して生成されるResultSetオブジェクトの,現在の保持機能を取得します。

getMetaData()

DatabaseMetaDataオブジェクトを生成します。

getTransactionIsolation()

このConnectionオブジェクトの現在のトランザクション遮断レベルを取得します。

getTypeMap()

このConnectionに関連したMapオブジェクトを取得します。

getWarnings()

このConnectionオブジェクトに関する呼び出しによって報告される警告を,SQLWarningオブジェクトとして取得します。

isClosed()

このConnectionオブジェクトがクローズされているかどうかを取得します。

isReadOnly()

このConnectionオブジェクトが読み込み専用モードかどうかを取得します。

nativeSQL(String sql)

指定されたSQL文内のエスケープ句を,HiRDBが実行できる形式に変換して返します。

prepareCall(String sql)

CALL文を実行するためのCallableStatementオブジェクトを生成します。

prepareCall(String sql, int resultSetType, int resultSetConcurrency)

CALL文を実行するためのCallableStatementオブジェクトを生成します。

prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)

CALL文を実行するためのCallableStatementオブジェクトを生成します。

prepareStatement(String sql)

パラメタ付きSQL文をデータベースに送るためのPreparedStatementオブジェクトを生成します。

prepareStatement(String sql, int resultSetType, int resultSetConcurrency)

パラメタ付きSQL文をデータベースに送るためのPreparedStatementオブジェクトを生成します。

prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)

パラメタ付きSQL文をデータベースに送るためのPreparedStatementオブジェクトを生成します。

rollback()

現在のトランザクションで行われた変更をすべて元に戻し,このConnectionオブジェクトが現在保持するデータベースロックをすべて解除します。

setAutoCommit(boolean autoCommit)

この接続の自動コミットモードを,指定された状態に設定します。

setCatalog(String catalog)

HiRDBにはカタログが存在しないため,このドライバはメソッドの指定値を無視します。

setHoldability(int holdability)

このConnectionオブジェクトを使用して生成されるResultSetオブジェクトの保持機能を,指定された保持機能へ変更します。

setReadOnly(boolean readOnly)

HiRDBには専用モードがないため,メソッドの指定値を無視します。

setTransactionIsolation(int level)

HiRDBでは常にTRANSACTION_REPEATABLE_READのため,このメソッドの指定値を無視します。

checkSession(int waittime)

現在の接続状態を確認します。

setHiRDB_Audit_Info(int pos,String userinf)

ユーザ任意の接続情報(ユーザ付加情報)を設定します。

isValid(int timeout)

×

現在の接続状態を確認します。

(凡例)

○:提供されます。

×:提供されません。

(a) clearWarnings()

【機能】

このConnectionオブジェクトに関して通知されたすべての警告をクリアします。

このメソッドを呼び出した後,このConnectionオブジェクトに対する新しい警告が報告されるまで,getWarnings()はnullを返します。

【形式】
public synchronized void clearWarnings() throws SQLException
【引数】

なし。

【戻り値】

なし。

【発生する例外】

このConnectionオブジェクトがcloseされている場合,SQLExceptionを投入します。

(b) close()

【機能】

HiRDBとの接続を切断します。

【形式】
public synchronized void close() throws SQLException
【引数】

なし。

【戻り値】

なし。

【機能詳細】

通常接続時は,HiRDBとの接続を切断するとともに,該当するオブジェクトを無効にし,不要なリソースを解放します。

プーリング環境下,及びXA環境下では,物理的な接続の切断をしません。この場合,PooledConnection.close()で物理的な接続の切断をします。

Conneciton.close()の実行でエラーが発生した場合は,SQLExceptionをthrowしません。

プーリング環境下,及びXA環境下でのConnection.close()の実行で,致命的なエラーが発生しコネクションプーリングが使用できなくなった場合,ConnectionEventListener.connectionErrorOccurred()は発生しません。

既にクローズされたConnectionオブジェクトでcloseメソッドを呼び出すと,このメソッドは何もしません。

【発生する例外】

なし。

(c) commit()

【機能】

直前のコミット又はロールバック以降に行われた変更を,すべて有効とします。

自動コミットモードを有効にしている状態でこのメソッドを呼び出しても,例外を投入しないでcommit処理を行います。

【形式】
public synchronized void commit() throws SQLException
【引数】

なし。

【戻り値】

なし。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • データベースアクセスエラーが発生した場合

  • Connectionオブジェクトに対してclose()が既に発行されている場合

(d) createStatement()

【機能】

SQL文をデータベースに送るためのStatementオブジェクトを生成します。

【形式】
public synchronized Statement createStatement() throws SQLException
【引数】

なし。

【戻り値】

Statementオブジェクト

【機能詳細】

SQL文をデータベースに送るためのStatementオブジェクトを生成します。

このメソッドで生成したStatementオブジェクトから生成されるResultSetの保持機能は,Connection.setHoldabilityで指定されている値になります。Connection.setHoldabilityを一度も実行していない場合は,プロパティHIRDB_CURSORの設定値になります。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • Connectionオブジェクトに対してclose()が既に発行されている場合

  • Statementオブジェクト生成でエラーが発生した場合

(e) createStatement(int resultSetType, int resultSetConcurrency)

【機能】

SQL文をデータベースに送るためのStatementオブジェクトを生成します。

【形式】
public synchronized Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException
【引数】
int resultSetType:

結果集合の型

int resultSetConcurrency:

並行処理モード

【戻り値】

Statementオブジェクト

【機能詳細】

SQL文をデータベースに送るためのStatementオブジェクトを生成します。

結果集合の型にTYPE_SCROLL_SENSITIVEを指定した場合,このドライバはTYPE_SCROLL_INSENSITIVEに切り替え,SQLWarningを設定します。

並行処理モードはCONCUR_READ_ONLYだけサポートします。CONCURE_UPDATABLEを指定した場合,CONCUR_READ_ONLYに切り替え,SQLWarningを設定します。

このメソッドで生成したStatementオブジェクトから生成されるResultSetの保持機能は,Connection.setHoldabilityで指定されている値になります。Connection.setHoldabilityを一度も実行していない場合は,プロパティHIRDB_CURSORの設定値になります。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • Connectionオブジェクトに対してclose()が既に発行されている場合

  • Statementオブジェクト生成でエラーが発生した場合

  • 結果集合の型にResultSet定数以外を指定した場合

  • 並行処理モードにResultSet定数以外を指定した場合

(f) createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)

【機能】

SQL文をデータベースに送るためのStatementオブジェクトを生成します。

【形式】
public synchronized Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException
【引数】
int resultSetType:

結果集合の型

int resultSetConcurrency:

並行処理モード

int resultSetHoldability:

ResultSetの保持機能

【戻り値】

Statementオブジェクト

【機能詳細】

SQL文をデータベースに送るためのStatementオブジェクトを生成します。

結果集合の型にTYPE_SCROLL_SENSITIVEを指定した場合,このドライバはTYPE_SCROLL_INSENSITIVEに切り替え,SQLWarningを設定します。

並行処理モードはCONCUR_READ_ONLYだけサポートします。CONCURE_UPDATABLEを指定した場合,CONCUR_READ_ONLYに切り替え,SQLWarningを設定します。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • Connectionオブジェクトに対してclose()が既に発行されている場合

  • Statementオブジェクト生成でエラーが発生した場合

  • 結果集合の型にResultSet定数以外を指定した場合

  • 並行処理モードにResultSet定数以外を指定した場合

  • ResultSetの保持機能にResultSet定数以外を指定した場合

(g) getAutoCommit()

【機能】

このConnectionオブジェクトでの現在の自動コミットモードを取得します。

【形式】
public synchronized boolean getAutoCommit() throws SQLException
【引数】

なし。

【戻り値】

Connectionオブジェクトでの現在の自動コミットモードの状態

【発生する例外】

このConnectionオブジェクトに対してclose()が既に発行されている場合,SQLExceptionを投入します。

(h) getCatalog()

【機能】

このConnectionオブジェクトの現在のカタログ名を取得します。

このメソッドの戻り値は,常にnullです。

【形式】
public synchronized String getCatalog() throws SQLException
【引数】

なし。

【戻り値】

HiRDBにはカタログが存在しないため,常にnullを返します。

【発生する例外】

このConnectionオブジェクトに対してclose()が既に発行されている場合,SQLExceptionを投入します。

(i) getHoldability()

【機能】

このConnectionオブジェクトを使用して生成されるResultSetオブジェクトの,現在の保持機能を取得します。

このメソッドの戻り値が,Statement(PreparedStatement)オブジェクト生成時に保持機能を指定しなかった場合の,ResultSetオブジェクトの保持機能になります。

【形式】
public synchronized int getHoldability() throws SQLException
【引数】

なし。

【戻り値】

ResultSetの型。次のどちらかです。

  • ResultSet.HOLD_CURSORS_OVER_COMMIT

  • ResultSet.CLOSE_CURSORS_AT_COMMIT

【発生する例外】

このConnectionオブジェクトに対してclose()が既に発行されている場合,SQLExceptionを投入します。

(j) getMetaData()

【機能】

DatabaseMetaDataオブジェクトを生成します。

【形式】
public synchronized DatabaseMetaData getMetaData() throws SQLException
【引数】

なし。

【戻り値】

DatabaseMetaDataオブジェクト

【発生する例外】

このConnectionオブジェクトに対してclose()が既に発行されている場合,SQLExceptionを投入します。

(k) getTransactionIsolation()

【機能】

このConnectionオブジェクトの現在のトランザクション遮断レベルを取得します。

常にTRANSACTION_REPEATABLE_READを返します。

【形式】
public synchronized int getTransactionIsolation() throws SQLException
【引数】

なし。

【戻り値】

常にTRANSACTION_REPEATABLE_READを返します。

【発生する例外】

このConnectionオブジェクトに対してclose()が既に発行されている場合,SQLExceptionを投入します。

(l) getTypeMap()

【機能】

このConnectionに関連したMapオブジェクトを取得します。

このドライバは,情報を格納していない空のjava.util.HashMapオブジェクトを返します。

【形式】
public synchronized java.util.Map getTypeMap() throws SQLException
【引数】

なし。

【戻り値】

空のjava.util.HashMapオブジェクト

【発生する例外】

このConnectionオブジェクトに対してclose()が既に発行されている場合,SQLExceptionを投入します。

(m) getWarnings()

【機能】

このConnectionオブジェクトに関する呼び出しによって報告される警告を,SQLWarningオブジェクトとして取得します。

【形式】
public synchronized SQLWarning getWarnings() throws SQLException
【引数】

なし。

【戻り値】

最初のSQLWarningオブジェクト(ない場合はnullを返します)

【機能詳細】

該当するConnectionオブジェクトが保持するSQLWarningオブジェクトを取得します。

取得したSQLWarningオブジェクトのgetNextWarningメソッドを実行することによって,二つ目以降の警告を取得できます。

【発生する例外】

このConnectionオブジェクトに対してclose()が既に発行されている場合,SQLExceptionを投入します。

(n) isClosed()

【機能】

このConnectionオブジェクトがクローズされているかどうかを取得します。

【形式】
public synchronized boolean isClosed()
【引数】

なし。

【戻り値】

このConnectionオブジェクトがクローズされている場合はtrue,まだクローズされていない場合はfalseを返します。

【機能詳細】

このConnectionオブジェクトがクローズされているかどうかを取得します。データベースへの接続は,closeメソッドが呼び出されるか,特定の致命的エラーが発生した場合に切断します。Connection.closeメソッドが呼び出された後に,このメソッドが呼び出された場合だけ,trueを返すことを保証します。データベースへの接続が,有効か無効かを判定するために使用することはできません。

【発生する例外】

なし。

(o) isReadOnly()

【機能】

このConnectionオブジェクトが読み込み専用モードかどうかを取得します。

このドライバでは常にfalseを返します。

【形式】
public synchronized boolean isReadOnly() throws SQLException
【引数】

なし。

【戻り値】

常にfalseを返します。

【発生する例外】

このConnectionオブジェクトに対してclose()が既に発行されている場合,SQLExceptionを投入します。

(p) nativeSQL(String sql)

【機能】

指定されたSQL文内のエスケープ句を,HiRDBが実行できる形式に変換して返します。

【形式】
public synchronized String nativeSQL(String sql) throws SQLException
【引数】
String sql:

変換前のSQL文

【戻り値】

HiRDBが実行できるSQL文(引数sqlがNULLの場合,NULLを返します。引数sqlが空文字の場合,空文字を返します)

【機能詳細】

指定されたSQL文内のエスケープ句を,HiRDBが実行できる形式に変換して返します。

エスケープ句の構文規則を次に示します。

エスケープ句 ::= 日付・時刻・時刻印のエスケープシーケンス
       | LIKEのエスケープシーケンス
       | 外部結合のエスケープシーケンス
       | プロシジャ呼び出しのエスケープシーケンス
       | スカラ関数のエスケープシーケンス
       | 代入のエスケープシーケンス
 
日付・時刻・時刻印のエスケープシーケンス ::= 日付のエスケープシーケンス
                     | 時刻のエスケープシーケンス
                     | 時刻印のエスケープシーケンス
 
日付のエスケープシーケンス ::=
     エスケープ開始子 d 日付データの既定の文字列表現 エスケープ終了子
 
時刻のエスケープシーケンス ::=
     エスケープ開始子 t 時刻データの既定の文字列表現 エスケープ終了子
 
時刻印のエスケープシーケンス ::=
     エスケープ開始子 ts 時刻印データの既定の文字列表現 エスケープ終了子
 
LIKEのエスケープシーケンス ::= 
     エスケープ開始子 escape エスケープ文字 エスケープ終了子
 
外部結合のエスケープシーケンス ::= エスケープ開始子 oj 結合表 エスケープ終了子
 
プロシジャ呼び出しのエスケープシーケンス ::=
     エスケープ開始子 call 〔認可識別子.〕ルーチン識別子
     〔(〔引数〔,引数〕…〕)〕 エスケープ終了子
 
代入のエスケープシーケンス ::= エスケープ開始子 set 代入文 エスケープ終了子
 
スカラ関数のエスケープシーケンス ::= エスケープ開始子 fn スカラ関数 エスケープ終了子
スカラ関数 ::= 標準形式のスカラ関数
 
エスケープ開始子 ::= '{'
エスケープ終了子 ::= '}'
注※

標準形式のスカラ関数については,「エスケープ句で指定できるスカラ関数」を参照してください。

下線部については,マニュアル「HiRDB Version 9 SQLリファレンス」を参照してください。なお,下線部には,エスケープ句を指定できません。また,JDBCドライバでは構文解析をしないで,変換後もそのままとし,HiRDBサーバの構文解析に任せます。

エスケープシーケンスのキーワードを次に示します。キーワードについては,大文字と小文字を区別しません。

  1. 日付のエスケープシーケンス内の"d"

  2. 時刻のエスケープシーケンス内の"t"

  3. 時刻印のエスケープシーケンス内の"ts"

  4. LIKEのエスケープシーケンス内の"escape"

  5. 外部結合のエスケープシーケンス内の"oj"

  6. プロシジャ呼び出しのエスケープシーケンス内の"call"

  7. スカラ関数のエスケープシーケンス内の"fn"

  8. 代入のエスケープシーケンス内の"set"

エスケープ句の入力規則を次に示します。

  • エスケープ句内の区切り文字は,半角空白が指定できます。

  • 区切り文字は,エスケープ開始子の後ろ,キーワードの後ろ,及びエスケープ終了子の前に挿入できます。

  • 区切り文字は,プロシジャ呼び出しのエスケープシーケンス内にある"call"の後ろに挿入してください。

  • 一つのSQL文中に,複数のエスケープ句を指定できます。

  • 注釈(「/*」から「*/」までの文字)内の{},アポストロフィ('),又は引用符(")で囲まれた{}は,エスケープ句と見なされません。

  • ドライバは指定されたSQL文内のエスケープ句を,HiRDBが実行できる形式に変換します。変換するのは,{}で囲まれたエスケープ句内だけです。エスケープ句外は,何も変換しません。

エスケープ句の変換規則を次の表に示します。

表17‒13 エスケープ句の変換規則

対象エスケープ句

変換前

変換後

日付

エスケープ開始子 d 日付データの既定の文字列表現 エスケープ終了子

日付データの既定の文字列表現

時刻

エスケープ開始子t 時刻データの既定の文字列表現 エスケープ終了子

時刻データの既定の文字列表現

時刻印

エスケープ開始子ts 時刻印データの既定の文字列表現 エスケープ終了子

時刻印データの既定の文字列表現

LIKE

エスケープ開始子 escape エスケープ文字 エスケープ終了子

escapeエスケープ文字

外部結合

エスケープ開始子 oj 結合表 エスケープ終了子

結合表

プロシジャ呼び出し

エスケープ開始子 call 〔認可識別子.〕ルーチン識別子〔(〔引数〔,引数〕…〕)〕 エスケープ終了子

HiRDB接続の場合

call〔認可識別子.〕ルーチン識別子(〔引数〔,引数〕…〕)※1

XDM/RD E2接続の場合

call〔認可識別子.〕ルーチン識別子〔(〔引数〔,引数〕…〕)〕

スカラ関数

エスケープ開始子 fn スカラ関数 エスケープ終了子

HiRDB形式のスカラ関数※2

代入

エスケープ開始子 set 代入文 エスケープ終了子

set代入文

注※1

ルーチン識別子の後ろの()が省略されている場合,()を付加します。

注※2

変換処理の詳細は,次のスカラ関数のエスケープ句の変換処理を参照してください。

標準形式のスカラ関数を,HiRDB形式に変換します。XDM/RD E2接続の場合は,XDM/RD E2形式に変換します。

標準形式に対応するHiRDBのスカラ関数が,HiRDBのシステム定義スカラ関数の場合,関数名の先頭に"MASTER."を付加します。

基本的に,スカラ関数の引数の個数チェックはしません。ただし,スカラ関数名がLOCATEの場合は,引数の区切りを示すコンマをIN,FROMに変換するため,引数の個数チェックをします。

標準形式とHiRDB形式が異なるスカラ関数の変換内容を次の表に示します。

表17‒14 標準形式とHiRDB形式が異なるスカラ関数の変換内容一覧

スカラ関数

変換前の形式

変換後の形式(HiRDB形式)

数学関数

CEILING(number)

MASTER.CEIL(number)

LOG(float)

MASTER.LN(float)

TRUNCATE(number, places)

MASTER.TRUNC(number, places)

文字列関数

CHAR(code)

MASTER.CHR(code)

INSERT(string1, start, length, string2)

MASTER.INSERTSTR(string1, start, length, string2)

LCASE(string)

LOWER(string)

LEFT(string, count)

MASTER.LEFTSTR(string, count)

LOCATE(string1, string2[, start])

POSITION(string1 IN string2 [FROM start])

RIGHT(string, count)

MASTER.RIGHTSTR(string, count)

SUBSTRING(string, start, length)

SUBSTR(string, start, length)

UCASE(string)

UPPER(string)

時刻と日付の関数

CURDATE()

CURRENT DATE

CURRENT_DATE()

CURRENT DATE

CURTIME()

CURRENT TIME

CURRENT_TIME()

CURRENT TIME

CURRENT_TIME(time-precision)

CURRENT TIME

NOW()

CURRENT TIMESTAMP(6)

システム関数

USER()

USER

標準形式とXDM/RD E2形式が異なるスカラ関数の変換内容を次の表に示します。

表17‒15 標準形式とXDM/RD E2形式が異なるスカラ関数の変換内容一覧

スカラ関数

変換前の形式

変換後の形式(XDM/RD E2形式)

数学関数

LOG(float)

LN(float)

文字列関数

LCASE(string)

LOWER(string)

LOCATE(string1, string2[, start])

POSITION(string1 IN string2 [FROM start])

LTRIM(string)

TRIM(LEADING FROM string)

RTRIM(string)

TRIM(TRAILING FROM string)

SUBSTRING(string, start, length)

SUBSTR(string, start, length)

UCASE(string)

UPPER(string)

時刻と日付の関数

CURDATE()

CURRENT DATE

CURRENT_DATE()

CURRENT DATE

CURTIME()

CURRENT TIME

CURRENT_TIME()

CURRENT TIME

NOW()

CURRENT TIMESTAMP(6)

システム関数

USER()

USER

HiRDB接続の場合の変換例を次に示します。

スカラ関数

変換前

変換後

標準形式とHiRDB形式が同じスカラ関数

システム組み込みスカラ関数

{fn ABS(number)}

ABS(number)

システム定義スカラ関数

{fn ASCII(string)}

MASTER.ASCII(string)

標準形式とHiRDB形式が異なるスカラ関数

システム組み込みスカラ関数

{fn UCASE(string)}

UPPER(string)

システム定義スカラ関数

{fn CEILING(number)}

MASTER.CEIL(number)

【発生する例外】

次の場合,SQLExceptionを投入します。

  • このConnectionオブジェクトに対してclose()が既に発行されている場合

  • 指定されたSQLのエスケープ句の形式が不正である場合

    ・"{"及びキーワードはあるが,"}"がない。

    ・{callの後ろにプロシジャ名称がない。

    ・{callとプロシジャ名称の間に空白がない。

    ・{callプロシジャ名"("の後ろに")"がない。

    ・{? = callを指定している。

    ・エスケープ句にLOCATE関数指定時,引数の指定がない。

    ・エスケープ句にLOCATE関数指定時,()内の引数の数が不正である。

    ・XDM/RD E2接続の場合,エスケープ句にLTRIM又はRTRIM関数を指定したとき,引数の指定がない。

(q) prepareCall(String sql)

【機能】

CALL文を実行するためのCallableStatementオブジェクトを生成します。

【形式】
public CallableStatement prepareCall(String sql) throws SQLException
【引数】
String sql:

実行するSQL文(CALL文以外も指定できます)

【戻り値】

CallableStatementオブジェクト

【機能詳細】

CALL文を実行するためのCallableStatementオブジェクトを生成します。

このメソッドで生成したCallableStatementオブジェクトから生成されるResultSetの保持機能は,Connection.setHoldabilityで指定されている値になります。Connection.setHoldabilityを一度も実行していない場合は,プロパティHIRDB_CURSORの設定値になります。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • このConnectionオブジェクトに対してclose()が既に発行されている場合

  • CallableStatementオブジェクト生成でエラーが発生した場合

  • HiRDB SQL Tuning Advisor用アクセスパス情報ファイルへの出力でエラーが発生した場合(JDBC4.0のときだけ)

(r) prepareCall(String sql, int resultSetType, int resultSetConcurrency)

【機能】

CALL文を実行するためのCallableStatementオブジェクトを生成します。

【形式】
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException
【引数】
String sql:

実行するSQL文(CALL文以外も指定できます)

int resultSetType:

結果集合の型

int resultSetConcurrency:

並行処理モード

【戻り値】

CallableStatementオブジェクト

【機能詳細】

CALL文を実行するためのCallableStatementオブジェクトを生成します。

結果集合の型にTYPE_SCROLL_SENSITIVEを指定した場合,このドライバはTYPE_SCROLL_INSENSITIVEに切り替え,SQLWarningを設定します。

並行処理モードはCONCUR_READ_ONLYだけサポートします。CONCURE_UPDATABLEを指定した場合,CONCUR_READ_ONLYに切り替え,SQLWarningを設定します。

このメソッドで生成したCallableStatementオブジェクトから生成されるResultSetの保持機能は,Connection.setHoldabilityで指定されている値になります。Connection.setHoldabilityを一度も実行していない場合は,プロパティHIRDB_CURSORの設定値になります。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • このConnectionオブジェクトに対してclose()が既に発行されている場合

  • CallableStatementオブジェクト生成でエラーが発生した場合

  • 結果集合の型にResultSet定数以外を指定した場合

  • 並行処理モードにResultSet定数以外を指定した場合

  • HiRDB SQL Tuning Advisor用アクセスパス情報ファイルへの出力でエラーが発生した場合(JDBC4.0のときだけ)

(s) prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)

【機能】

CALL文を実行するためのCallableStatementオブジェクトを生成します。

【形式】
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException
【引数】
String sql:

実行するSQL文(CALL文以外も指定できます)

int resultSetType:

結果集合の型

int resultSetConcurrency:

並行処理モード

int resultSetHoldability:

ResultSetの保持機能

【戻り値】

CallableStatementオブジェクト

【機能詳細】

CALL文を実行するためのCallableStatementオブジェクトを生成します。

結果集合の型にTYPE_SCROLL_SENSITIVEを指定した場合,このドライバはTYPE_SCROLL_INSENSITIVEに切り替え,SQLWarningを設定します。

並行処理モードはCONCUR_READ_ONLYだけサポートします。CONCURE_UPDATABLEを指定した場合,CONCUR_READ_ONLYに切り替え,SQLWarningを設定します。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • このConnectionオブジェクトに対してclose()が既に発行されている場合

  • CallableStatementオブジェクト生成でエラーが発生した場合

  • 結果集合の型にResultSet定数以外を指定した場合

  • 並行処理モードにResultSet定数以外を指定した場合

  • ResultSetの保持機能にResultSet定数以外を指定した場合

  • HiRDB SQL Tuning Advisor用アクセスパス情報ファイルへの出力でエラーが発生した場合(JDBC4.0のときだけ)

(t) prepareStatement(String sql)

【機能】

パラメタ付きSQL文をデータベースに送るためのPreparedStatementオブジェクトを生成します。

【形式】
public PreparedStatement prepareStatement(String sql) throws SQLException
【引数】
String sql:

実行するSQL文

【戻り値】

PreparedStatementオブジェクト

【機能詳細】

パラメタ付きSQL文をデータベースに送るためのPreparedStatementオブジェクトを生成します。

このメソッドで生成したPreparedStatementオブジェクトから生成されるResultSetの保持機能は,Connection.setHoldabilityで指定されている値になります。Connection.setHoldabilityを一度も実行していない場合は,プロパティHIRDB_CURSORの設定値になります。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • このConnectionオブジェクトに対してclose()が既に発行されている場合

  • PreparedStatementオブジェクト生成でエラーが発生した場合

  • HiRDB SQL Tuning Advisor用アクセスパス情報ファイルへの出力でエラーが発生した場合(JDBC4.0のときだけ)

(u) prepareStatement(String sql, int resultSetType, int resultSetConcurrency)

【機能】

パラメタ付きSQL文をデータベースに送るためのPreparedStatementオブジェクトを生成します。

【形式】
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException
【引数】
String sql:

実行するSQL文(CALL文以外も指定できます)

int resultSetType:

結果集合の型

int resultSetConcurrency:

並行処理モード

【戻り値】

PreparedStatementオブジェクト

【機能詳細】

パラメタ付きSQL文をデータベースに送るためのPreparedStatementオブジェクトを生成します。

結果集合の型にTYPE_SCROLL_SENSITIVEを指定した場合,このドライバはTYPE_SCROLL_INSENSITIVEに切り替え,SQLWarningを設定します。

並行処理モードはCONCUR_READ_ONLYだけサポートします。CONCURE_UPDATABLEを指定した場合,CONCUR_READ_ONLYに切り替え,SQLWarningを設定します。

このメソッドで生成したPreparedStatementオブジェクトから生成されるResultSetの保持機能は,Connection.setHoldabilityで指定されている値になります。Connection.setHoldabilityを一度も実行していない場合は,プロパティHIRDB_CURSORの設定値になります。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • このConnectionオブジェクトに対してclose()が既に発行されている場合

  • PreparedStatementオブジェクト生成でエラーが発生した場合

  • 結果集合の型にResultSet定数以外を指定した場合

  • 並行処理モードにResultSet定数以外を指定した場合

  • HiRDB SQL Tuning Advisor用アクセスパス情報ファイルへの出力でエラーが発生した場合(JDBC4.0のときだけ)

(v) prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)

【機能】

パラメタ付きSQL文をデータベースに送るためのPreparedStatementオブジェクトを生成します。

【形式】
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException
【引数】
String sql:

実行するSQL文(CALL文以外も指定できます)

int resultSetType:

結果集合の型

int resultSetConcurrency:

並行処理モード

int resultSetHoldability:

ResultSetの保持機能

【戻り値】

PreparedStatementオブジェクト

【機能詳細】

パラメタ付きSQL文をデータベースに送るためのPreparedStatementオブジェクトを生成します。

結果集合の型にTYPE_SCROLL_SENSITIVEを指定した場合は,このドライバはTYPE_SCROLL_INSENSITIVEに切り替え,SQLWarningを設定します。

並行処理モードはCONCUR_READ_ONLYだけサポートします。CONCURE_UPDATABLEを指定した場合,CONCUR_READ_ONLYに切り替え,SQLWarningを設定します。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • このConnectionオブジェクトに対してclose()が既に発行されている場合

  • PreparedStatementオブジェクト生成でエラーが発生した場合

  • 結果集合の型にResultSet定数以外を指定した場合

  • 並行処理モードにResultSet定数以外を指定した場合

  • ResultSetの保持機能にResultSet定数以外を指定した場合

  • HiRDB SQL Tuning Advisor用アクセスパス情報ファイルへの出力でエラーが発生した場合(JDBC4.0のときだけ)

(w) rollback()

【機能】

現在のトランザクションで行われた変更をすべて元に戻し,このConnectionオブジェクトが現在保持するデータベースロックをすべて解除します。

自動コミットモードを有効にしている状態で,このメソッドを呼び出しても例外を投入しないで,rollback処理を行います。

【形式】
public synchronized void rollback() throws SQLException
【引数】

なし。

【戻り値】

なし。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • データベースアクセスエラーが発生した場合

  • Connectionオブジェクトに対してclose()が既に発行されている場合

(x) setAutoCommit(boolean autoCommit)

【機能】

この接続の自動コミットモードを,指定された状態に設定します。

【形式】
public synchronized void setAutoCommit(boolean autoCommit) throws SQLException
【引数】
boolean autoCommit:

自動コミットモードを有効にする場合はtrue,無効にする場合はfalseを指定します。

【戻り値】

なし。

【機能詳細】

この接続の自動コミットモードを指定された状態に設定します。接続が自動コミットモードの場合,そのすべてのSQL文は,実行後に個別のトランザクションとしてコミットされます。そうでない場合,そのSQL文は,commitメソッド又はrollbackメソッドへの呼び出しによって終了されるトランザクションにグループ化されます。デフォルトでは,新しい接続は自動コミットモードです。

自動コミットは,SQL文の完了で発生します。SQL文がResultSetオブジェクトを返す場合,ResultSetオブジェクトがクローズされたときに,SQL文は完了します。

トランザクションの途中でこのメソッドが呼び出されても,そのトランザクションはコミットされません。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • このConnectionオブジェクトが分散トランザクション下で動作している場合

  • このConnectionオブジェクトに対してclose()が既に発行されている場合

(y) setCatalog(String catalog)

【機能】

HiRDBにはカタログが存在しないため,このドライバはメソッドの指定値を無視します。

【形式】
public synchronized void setCatalog(String catalog) throws SQLException
【引数】
String catalog:

HiRDBにはカタログがないため,指定値を無視します。

【戻り値】

常にfalseを返します。

【発生する例外】

このConnectionオブジェクトに対してclose()が既に発行されている場合,SQLExceptionを投入します。

(z) setHoldability(int holdability)

【機能】

このConnectionオブジェクトを使用して生成されるResultSetオブジェクトの保持機能を,指定された保持機能へ変更します。

【形式】
public synchronized void setHoldability(int holdability) throws SQLException
【引数】
int holdability:

ResultSetの保持機能定数(ResultSet.HOLD_CURSORS_OVER_COMMIT又はResultSet.CLOSE_CURSORS_AT_COMMIT)

【戻り値】

なし。

【機能詳細】

このConnectionオブジェクトを使用して生成されるResultSetオブジェクトの保持機能を,指定された保持機能へ変更します。

このメソッドの値は,createStatement(prepareStatement,prepareCall)を保持機能の指定なしで呼び出したときの設定値であり,生成済みのStatement及びそのStatementから生成される(生成された)ResultSetには影響しません。

保持機能のデフォルト値を次の表に示します。

表17‒16 保持機能のデフォルト値

プロパティHiRDB_CURSORの指定値

デフォルト値

TRUE

ResultSet.HOLD_CURSORS_OVER_COMMIT

FALSE

ResultSet.CLOSE_CURSORS_AT_COMMIT

指定なし

ResultSet.CLOSE_CURSORS_AT_COMMIT

【発生する例外】

次の場合,SQLExceptionを投入します。

  • このConnectionオブジェクトに対してclose()が既に発行されている場合

  • 引数holdabilityにResultSet.HOLD_CURSORS_OVER_COMMIT又はResultSet.CLOSE_CURSORS_AT_COMMIT以外が指定された場合

(aa) setReadOnly(boolean readOnly)

【機能】

HiRDBには専用モードがないため,メソッドの指定値を無視します。

【形式】
public synchronized void setReadOnly(boolean readOnly) throws SQLException
【引数】
boolean readOnly:

HiRDBには専用モードがないため,指定値を無視します。

【戻り値】

なし。

【発生する例外】

このConnectionオブジェクトに対してclose()が既に発行されている場合,SQLExceptionを投入します。

(ab) setTransactionIsolation(int level)

【機能】

HiRDBでは常にTRANSACTION_REPEATABLE_READのため,このメソッドの指定値を無視します。

【形式】
public void setTransactionIsolation(int level) throws SQLException
【引数】
int level:

トランザクション遮断レベル

【戻り値】

なし。

【発生する例外】

このConnectionオブジェクトに対してclose()が既に発行されている場合,SQLExceptionを投入します。

(ac) checkSession(int waittime)

【機能】

現在の接続状態を確認します。

【形式】
public int checkSession (int waittime) throws SQLException
【引数】
int waittime:

待ち時間(単位:秒)。0の場合,クライアント環境定義PDCWAITTIMEで指定した時間まで待ちます。

【戻り値】
PrdbConnection.SESSION_ALIVE:

接続中であることを確認できました。

PrdbConnection.SESSION_NOT_ALIVE:

引数で指定された時間でのタイムアウト以外の原因によって,接続中であることを確認できませんでした。

PrdbConnection.SESSION_CHECK_TIMEOUT:

引数で指定された時間でのタイムアウトによって,接続中であることを確認できませんでした。

【発生する例外】

引数waittimeがマイナスの場合,例外SQLExceptionを投入します。

(ad) setHiRDB_Audit_Info(int pos,String userinf)

【機能】

ユーザ任意の接続情報(ユーザ付加情報)を設定します。

【形式】
public synchronized void setHiRDB_Audit_Info(int pos,String userinf) throws SQLException
【引数】
int pos:

ユーザ付加情報を設定する番号

1:ユーザ付加情報1

2:ユーザ付加情報2

3:ユーザ付加情報3

String userinf:

ユーザ付加情報。ユーザ付加情報に設定されたデータは,HiRDBとの文字データ処理で,接続時のプロパティENCODELANGやsetEncodeLangメソッドに指定された文字セット,又はHiRDBサーバの文字コードに変換されます。コード変換後のバイト数が100バイト以内となるデータを設定してください。設定情報を解除する場合はNULL値を設定します。

【戻り値】

なし。

【機能詳細】

HiRDBサーバにアクセスするアプリケーションのアカウント情報などのユーザ付加情報を設定します。設定したユーザ付加情報は解除するまで有効となります。該当するConnectionオブジェクトを使用して生成したStatementオブジェクト,PreparedStatementオブジェクト,及びCallableStatementオブジェクトを使用したSQL実行時に,設定したユーザ付加情報が監査証跡に出力されます。

なお,このメソッドは,埋込みSQLでのユーザ任意接続情報の設定(DECLARE AUDIT INFO SET)に該当します。

【発生する例外】

次の場合,SQLExceptionを投入します。

  • 該当するConnectionオブジェクトがクローズされている場合

  • ユーザ付加情報のコード変換に失敗した場合

  • posに1〜3以外の値が指定された場合

  • ユーザ付加情報のコード変換後のデータ長が100バイトを超えている場合

(ae) isValid(int timeout)

【機能】

現在の接続状態を確認します。

【形式】
public synchronized boolean isValid (int timeout) throws SQLException
【引数】
int timeout:

待ち時間(秒)。0の場合,無制限となります。

【戻り値】
  • true:接続中であることを確認できました。

  • false:接続中であることを確認できませんでした。次のどちらかの状態です。

    ・該当するConnectionオブジェクトがクローズされました。

    ・引数で指定された時間でのタイムアウト期間が過ぎました。

【発生する例外】

引数timeoutが-1以下の場合,例外SQLExceptionを投入します。

(3) パッケージ名称及びクラス名称

このインタフェースを実装するパッケージ名称とクラス名称を次に示します。

パッケージ名称:JP.co.Hitachi.soft.HiRDB.JDBC

クラス名称:PrdbConnection

(4) 注意事項

(a) ホールダビリティの指定について

ResultSetのホールダビリティにResultSet.HOLD_CURSORS_OVER_COMMITを指定した場合,JDBCドライバはHiRDBのホールダブルカーソル機能を使用します。

次に示す方法でホールダビリティを指定すると,URLの構文HIRDB_CURSOR,又はプロパティHIRDB_CURSORの指定値を,ステートメントオブジェクト(Statement,PreparedStatement,CallableStatementオブジェクト)及びConnectionオブジェクトごとに上書きできます。

  • createStatement,preparedStatement,prepareCallメソッドの引数resultSetHoldability

  • setHoldabilityメソッドの引数holdability

  • 実行するSQL文(SELECT文)のUNTIL DISCONNECTの有無

該当するオブジェクトから生成したResultSetオブジェクト又はDatabaseMetaDataオブジェクト(setHoldabilityメソッド使用時)は,これらの指定とHIRDB_CURSORの指定の組み合わせによって有効になるホールダビリティの指定が変わります。

次のメソッドで生成したステートメントオブジェクトの場合に有効になるホールダビリティの指定を,次の表に示します。

  • createStatement(int resultSetType,int resultSetConcurrency, int resultSetHoldability)

  • prepareStatement(int resultSetType,int resultSetConcurrency, int resultSetHoldability)

  • prepareCall(int resultSetType,int resultSetConcurrency, int resultSetHoldability)

表17‒17 有効になるホールダビリティの指定(1/2)

HIRDB_CURSOR,又はsetHiRDBCursorModeの指定

引数resultSetHoldabilityの指定値

ResultSet.

HOLD_CURSORS_OVER_COMMIT

ResultSet.

CLOSE_CURSORS_AT_COMMIT

UNTIL DISCONNECT付きのSELECT文を実行

左記以外のSQL文を実行

プロパティHIRDB_CURSORにTRUEを指定

URLの構文HIRDB_CURSORにTRUEを指定

T

T

F

URLの構文HIRDB_CURSORにFALSEを指定

T

T

F

プロパティHIRDB_CURSORにFALSEを指定

URLの構文HIRDB_CURSORにTRUEを指定

T

T

F

URLの構文HIRDB_CURSORにFALSEを指定

T

T

F

setHiRDBCursorModeにtrueを指定

T

T

F

setHiRDBCursorModeにfalseを指定

T

T

F

(凡例)

T:HIRDB_CURSORにTRUEを指定したものとして動作します。

F:HIRDB_CURSORにFALSEを指定したものとして動作します。

表「有効になるホールダビリティの指定(1/2)」以外のメソッドで生成したステートメントオブジェクト,又はDatabaseMetaDataオブジェクトの場合に有効になるホールダビリティの指定を,次の表に示します。

表17‒18 有効になるホールダビリティの指定(2/2)

HIRDB_CURSOR,又はsetHiRDBCursorModeの指定

setHoldabilityメソッドの指定値

setHoldabilityメソッドの実行なし

ResultSet.

HOLD_CURSORS_OVER_COMMIT

ResultSet.

CLOSE_CURSORS_AT_COMMIT

UNTIL DISCONNECT付きのSELECT文を実行

左記以外のSQL文を実行

UNTIL DISCONNECT付きのSELECT文を実行

左記以外のSQL文を実行

プロパティHIRDB_CURSORにTRUEを指定

URLの構文HIRDB_CURSORにTRUEを指定

T

T

F

T

T

URLの構文HIRDB_CURSORにFALSEを指定

T

T

F

T

F

プロパティHIRDB_CURSORにFALSEを指定

URLの構文HIRDB_CURSORにTRUEを指定

T

T

F

T

T

URLの構文HIRDB_CURSORにFALSEを指定

T

T

F

T

F

setHiRDBCursorModeにtrueを指定

T

T

F

T

T

setHiRDBCursorModeにfalseを指定

T

T

F

T

F

(凡例)

T:HIRDB_CURSORにTRUEを指定したものとして動作します。

F:HIRDB_CURSORにFALSEを指定したものとして動作します。

HIRDB_CURSORについては,「getConnectionメソッドによるHiRDBへの接続」を参照してください。