スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
Statementインタフェースでは,主に次の機能が提供されます。
Statementインタフェースのメソッド一覧を表次の表に示します。なお,表に記載されていないメソッドはサポートしていません。サポートしていないメソッドを指定すると,SQLExceptionを投入します。
表18-17 Statementインタフェースのメソッド一覧
記載箇所 | メソッド | 機能 |
---|---|---|
(a) | addBatch(String sql) | このStatementオブジェクトのバッチに,指定されたSQLを追加します。 |
(b) | cancel() | 該当するオブジェクト,及び該当するオブジェクトと同一接続のオブジェクトが実行中のSQLを取り消します。 |
(c) | clearBatch() | このStatementオブジェクトのバッチに登録されたSQLを,すべてクリアします。 |
(d) | clearWarnings() | このStatementオブジェクトに関して報告された,すべての警告をクリアします。 |
(e) | close() | Statementオブジェクト,及びこのStatementオブジェクトから生成したResultSetオブジェクトのクローズを行います。 |
(f) | execute(String sql) | 指定されたSQL文を実行します。 |
(g) | executeBatch() | バッチに登録されたSQLを実行し,更新行数の配列を返します。 |
(h) | executeQuery(String sql) | 指定された検索系SQLを実行し,その結果のResultSetオブジェクトを返します。 |
(i) | executeUpdate(String sql) | 指定された検索系以外のSQLを実行し,更新行数を返します。 |
(j) | getConnection() | このStatementオブジェクトを生成したConnectionオブジェクトを返します。 |
(k) | getFetchDirection() | このStatementオブジェクトから生成される結果集合の,デフォルトのフェッチ方向を取得します。 |
(l) | getFetchSize() | このStatementオブジェクトから生成されるResultSetオブジェクトの,デフォルトのフェッチサイズを取得します。 |
(m) | getMaxFieldSize() | このStatementオブジェクトによって生成される,ResultSetオブジェクトの文字及びバイナリの各列値に対し,返される最大バイト数を取得します。 |
(n) | getMaxRows() | このStatementオブジェクトによって生成されるResultSetオブジェクトが,含むことのできる最大格納行数を取得します。 |
(o) | getMoreResults() | 次の結果集合に移動します。 |
(p) | getQueryTimeout() | SQL実行がタイムアウトになる秒数を返します。 |
(q) | getResultSet() | ResultSetオブジェクトとして,現在の結果を取得します。 |
(r) | getResultSetConcurrency() | このStatementオブジェクトから生成されるResultSetオブジェクトの並行処理モードを取得します。 |
(s) | getResultSetHoldability() | このStatementオブジェクトから生成されるResultSetオブジェクトの保持機能を取得します。 |
(t) | getResultSetType() | このStatementオブジェクトから生成されるResultSetオブジェクトの,結果集合の型を取得します。 |
(u) | getUpdateCount() | 更新行数を返します。 |
(v) | getWarnings() | このStatementオブジェクトに関する呼び出しによって報告される,最初の警告を取得します。 |
(w) | setCursorName(String name) | このドライバでは,位置決めされた更新及び削除をサポートしていないため,このメソッドは指定値を無視します。 |
(x) | setEscapeProcessing(boolean enable) | このStatementオブジェクトによるエスケープ構文の解析を,有効又は無効にします。 |
(y) | setFetchDirection(int direction) | このStatementオブジェクトから生成される結果集合の,デフォルトのフェッチ方向を指定します。 |
(z) | setFetchSize(int rows) | このStatementオブジェクトから生成されるResultSetオブジェクトの,デフォルトのフェッチサイズを設定します。 |
(aa) | setMaxFieldSize(int max) | このStatementオブジェクトによって生成されるResultSetオブジェクトの,文字及びバイナリの各列に対する最大バイト数を,指定されたバイト数に設定します。 |
(ab) | setMaxRows(int max) | このStatementオブジェクトによって生成されるResultSetオブジェクトが,含むことのできる最大格納行数を設定します。 |
(ac) | setQueryTimeout(int seconds) | SQL実行がタイムアウトになる秒数を設定します。 |
public synchronized void addBatch(String sql) throws SQLException
public void cancel() throws SQLException
public synchronized void clearBatch() throws SQLException
public synchronized void clearWarnings() throws SQLException
public void close() throws SQLException
public synchronized boolean execute(String sql) throws SQLException
表18-18 実行したSQLとStatement.getResultSet及びStatement.getUpdateCountの戻り値の関係
実行したSQLの種類 | Statement.getResultSetの戻り値 | Statement.getUpdateCountの戻り値 | |
---|---|---|---|
システムプロパティHiRDB_for_Java_DAB_EXECUTESQL_NOCHK指定 | |||
TRUE以外 | TRUE | ||
検索系SQL | 実行結果のResultSetオブジェクト | -1 | |
検索系以外のSQL | null | 0列のResultSetオブジェクト | 0以上の値 |
SQLの実行がエラーとなった場合 | null | null | -1 |
public synchronized int[] executeBatch() throws SQLException
public synchronized ResultSet executeQuery(String sql) throws SQLException
表18-19 executeQueryメソッドの戻り値と,メソッド実行後に実行するStatement.getUpdateCountメソッドの戻り値
実行したSQLの種類 | executeQueryメソッドの戻り値 | Statement.getUpdateCountメソッドの戻り値 | |
---|---|---|---|
検索系SQL | 実行結果のResultSetオブジェクト | -1 | |
検索系以外のSQL | INSERT,UPDATE,DELETE | 0列のResultSetオブジェクト | 更新行数 |
その他 | 0列のResultSetオブジェクト | 0 | |
SQLの実行がエラーとなった場合 | − | -1 |
public synchronized int executeUpdate(String sql) throws SQLException
実行したSQLの種類 | システムプロパティHiRDB_for_Java_DAB_EXECUTESQL_NOCHK指定 | ||
---|---|---|---|
TRUE以外 | TRUE | ||
検索系SQL | − | -1 | |
検索系以外のSQL | INSERT,UPDATE,DELETE | 更新行数 | 更新行数 |
その他 | 0 | 0 |
表18-20 executeUpdateメソッド実行後に実行するStatement.getResultSetメソッドの戻り値
実行したSQLの種類 | Statement.getResultSetメソッドの戻り値 | |
---|---|---|
検索系SQL | 実行結果のResultSetオブジェクト | |
検索系以外のSQL | INSERT,UPDATE,DELETE | 0列のResultSetオブジェクト |
その他 | 0列のResultSetオブジェクト | |
SQLの実行がエラーとなった場合 | null |
public synchronized Connection getConnection() throws SQLException
public synchronized int getFetchDirection() throws SQLException
public synchronized int getFetchSize() throws SQLException
表18-21 フェッチサイズと戻り値の関係
setFetchSizeの設定値(m) | 戻り値 |
---|---|
0 | 0 |
1≦m≦4096 | m |
public synchronized int getMaxFieldSize() throws SQLException
public synchronized int getMaxRows() throws SQLException
public synchronized boolean getMoreResults() throws SQLException
public synchronized int getQueryTimeout() throws SQLException
public synchronized ResultSet getResultSet() throws SQLException
public synchronized int getResultSetConcurrency() throws SQLException
public synchronized int getResultSetHoldability() throws SQLException
public synchronized int getResultSetType() throws SQLException
public synchronized int getUpdateCount() throws SQLException
Statementオブジェクトのメソッド実行状態 | getUpdateCountの戻り値 | |||
---|---|---|---|---|
executeXXXメソッドを実行していない | -1 | |||
executeXXXメソッドを実行している | 最後に実行したexecuteXXXメソッドの後,getMoreResultsメソッドを実行した | -1 | ||
最後に実行したexecuteXXXメソッドでエラーが発生した | -1 | |||
最後にexecuteBatchメソッドを実行した | -1 | |||
最後にexecuteBatchメソッド以外のexecuteXXXメソッドを実行した | 最後に実行したSQLが検索系SQL | -1 | ||
最後に実行したSQLが検索系以外のSQL | INSERT,UPDATE,DELETE | 更新行数 | ||
その他 | 0 |
public synchronized SQLWarning getWarnings() throws SQLException
public synchronized void setCursorName(String name) throws SQLException
public synchronized void setEscapeProcessing(boolean enable) throws SQLException
public synchronized void setFetchDirection(int direction) throws SQLException
public synchronized void setFetchSize(int rows) throws SQLException
表18-22 設定値と実際に使用されるPDBLKFの関係
setFetchSizeの設定値(m) | クライアント環境定義PDBLKFの値(n) | ブロック転送機能で使用されるPDBLKFの値 |
---|---|---|
0 | 1≦n≦4096 | n |
指定なし | 指定なし | |
1≦m≦4096 | 1≦n≦4096 | m |
指定なし | m |
public synchronized void setMaxFieldSize(int max) throws SQLException
public synchronized void setMaxRows(int max) throws SQLException
public synchronized void setQueryTimeout(int seconds) throws SQLException
このインタフェースを実装するパッケージ名称とクラス名称を次に示します。
setFetchSizeメソッドに1以上を指定すると,JDBCドライバはブロック転送機能を利用して,引数で指定した行数の検索結果をHiRDBサーバに対して一度に要求します。ブロック転送機能の詳細は,「4.7 ブロック転送機能」を参照してください。
setFetchSizeメソッドの指定値に上限はありませんが,ブロック転送機能で一度に転送できる行数の最大は4,096行のため,4,097以上を指定しても実際の転送行数は4,096行以下になります。
JDBCドライバがHiRDBサーバに対して一度の通信で要求する行数は,次の表に示す優先順位によって決定します。
表18-23 JDBCドライバがHiRDBサーバに対して一度の通信で要求する行数の優先順位
優先順位 | 指定値 |
---|---|
1 | ResultSetクラスのsetFetchSizeメソッドの引数で指定した値。 |
2 | StatementクラスのsetFetchSizeメソッドの引数で指定した値。 |
3 | クライアント環境定義PDBLKFで設定した値。 |
表18-23に示す転送要求行数に対して,実際にJDBCドライバがHiRDBサーバから一度の通信で受け取る行数は,「4.7(4) 1回の通信で転送する行数」を参照してください。ただし,「PDBLKF」は「表18-23に示す優先順位で決定した転送要求行数」に,「FETCH文」は「ResultSetクラスのnextメソッド」に読み替えてください。
なお,検索結果が表18-23に示す転送行数より多い場合,JDBCドライバは検索が終了するまで(又は,UAPからの検索要求がなくなるまで),HiRDBサーバに対して転送を要求します。
また,次のどれかの条件に一致する場合,HiRDBサーバからJDBCドライバが一度に受け取る行数は1になります。
cancelメソッドを使用すると,HiRDBサーバで処理中のSQLに対する非同期キャンセルを実行できます。該当するStatementオブジェクトがSQLを実行中でなくても,同一の接続オブジェクトに対してほかのオブジェクトがSQLを実行していると,非同期キャンセルを実行します。
HiRDBサーバで非同期キャンセルが実行されると,Statementオブジェクト及びResultSetオブジェクトをコミット実行後も有効とするかどうかの指定に関係なく,非同期キャンセル前に作成したPreparedStatementオブジェクト及びResultSetオブジェクトが無効になります。
オブジェクトをコミット実行後も有効とするかどうかの指定方法を次に示します。
該当するStatementオブジェクトがSQLを実行中でなく,かつ同一の接続オブジェクトに対してほかのオブジェクトがSQLを実行していないと,HiRDBサーバに対する非同期キャンセルを実行しません。
また,XADataSourceを使用した接続の場合は,非同期キャンセルの要求は有効となりません。
該当するStatementオブジェクトが生成したResultSetオブジェクトがクローズされていない状態でexecuteXXXメソッドを実行すると,以前生成したResultSetオブジェクトをクローズします。このため,executeXXXメソッド実行後,以前に生成したResultSetオブジェクトを使用して検索結果を取得しようとすると,SQLExceptionを投入します。SQLExceptionが発生する例を次に示します。
Statement st = con.createStatement(); ResultSet rs1 = st.executeQuery("select * from tb1"); ResultSet rs2 = st.executeQuery("select * from tb2"); rs1.next(); // SQLExceptionを投入する。 rs2.next(); |
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.