DABroker for C++
データベースの検索は,SQL文を前処理してカーソルを準備(Executeメソッド)し,その後カーソルをオープン(GetResultSetメソッド)して行います。DBMSによってはCommit又はRollback実行時にカーソルをクローズしたり,前処理を無効にするものがあります。カーソルをクローズすると,その状態で検索を続けることはできません。再度カーソルをオープンする必要があります。前処理が無効になった場合は,検索できません。検索するには,再度SQL文を前処理してカーソルを準備し,そのカーソルをオープンする必要があります。
検索時のCommit,Rollbackには以下のタイミングがあります。
Execute (DBStatement, DBPreparedStatement)
↓ @ (Commit, Rollback)
GetResultSet (DBStatement, DBPreparedStatement)
↓ A (Commit, Rollback)
PageNext,Next (DBResultSet)
↓ B (Commit, Rollback)
PageNext,Next (DBResultSet)
↓ C (Commit, Rollback)
Refresh (DBResultSet)
↓ D (Commit, Rollback)
PageNext,Next (DBResultSet)
:
DBStatementクラス, DBPreparedStatementクラスのSetResultSetTypeメソッドでTYPE_EXCLUSIVEを指定して検索を実行した場合は,@のタイミングではまだカーソルをオープンしていません。CのタイミングではRefreshメソッドでカーソルを再オープンするためどちらも問題ありませんが,A,B,DのタイミングでCommit又はRollbackを実行した場合はカーソルを閉じてしまうため次の処理に進めません。この場合はRefreshメソッドで再検索を実行する必要があります。
SetResultSetTypeメソッドでTYPE_NONEを指定した場合は,@〜Dのどのタイミングで実行しても検索処理は継続できます。
SetResultSetTypeメソッドで指定した値にかかわらず,@〜DのどのタイミングでCommit又はRollbackを実行してもカーソルが閉じられ,前処理が無効になってしまうため,検索処理は継続できません。再度Executeメソッドから実行し直す必要があります。
@〜Dのどのタイミングで実行しても検索を続行できます。特に制限はありません。
All Rights Reserved. Copyright (C) 1998, 2015, Hitachi, Ltd.