- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ResultSetオブジェクトのメソッドについて)
ResultSetオブジェクトのメソッドでエラーが発生する問題について
このQ&Aのポイント
- JDBCを使用してAccessのRDBに接続し、ResultSetオブジェクトのprevious()メソッドやfirst()メソッドを使用するとエラーが発生します。
- next()メソッドを使用した後に、データの処理についてわからない点があります。
- カーソルのバックはできないというエラーが表示されます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#16216
回答No.1
エラーメッセージに出力されている通り、例えば Statement st = connection.createStatement(); ResultSet resultset = st.executeQuery(SQL文); という風にResultSet オブジェクトを取得した場合、ResultSet のオブジェクトは 順方向(TYPE_FORWARD_ONLY)で取得されます。 このためカーソルを戻そうとする(previos()やfirst()を使う)とSQLExceptionが発生します。 これを回避するためには、 Statement st = connection.createStatement ( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet resultset = st.executeQuery(SQL文); のように設定します。 これだと、エラーを発生させずに、previos()やfirst()を使用することができます。 なお、上記の例だと、 int r = 0; while(resultset.next()) { r++; String 変数名 = resultset.getString("フィールド名"); } としてやれば、わざわざprevios()メソッドを使う必要がないように思いますが。。。
お礼
spoonyさん、ご回答ありがとうございました。 無事に、データ表示することができました。 大変、助かりまた勉強になりました。 >nt r = 0; >while(resultset.next()) { > r++; > String 変数名 = resultset.getString("フィールド>名"); >} > >としてやれば、わざわざprevios()メソッドを使う必要がないように思いますが。。。 取得したデータの処理をする前に、データ数を数えたかったのであの様なプログラム順序にしました。他にもっといい方法があると思うのですが。。。