Hitachi

Hitachi Advanced Data Binder AP開発ガイド


8.4.42 Statementインタフェースに関する注意事項

〈この項の構成〉

(1) executeXXXメソッド実行時の注意事項

該当するStatementオブジェクトが生成したResultSetオブジェクトがクローズされていない状態でexecuteXXXメソッドを実行すると,以前生成したResultSetオブジェクトをクローズします。このため,executeXXXメソッド実行後,以前に生成したResultSetオブジェクトを使用して検索結果を取得しようとすると,SQLExceptionが投入されます。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();

(2) Statementオブジェクトのクローズ

Statementオブジェクトを使用したあとは,必ず明示的にcloseメソッドでStatementオブジェクトをクローズしてください。Statementオブジェクトを明示的にクローズすると,HADB内の対応する文ハンドルが解放されます。Statementオブジェクトをクローズしないと,文ハンドルが不足することがあります。

ただし,文ハンドルはCOMMITまたはROLLBACKでトランザクションを決着した場合も解放されます。したがって,トランザクションをある程度の間隔で決着させると,文ハンドルの不足を回避できます。