0
0

More than 3 years have passed since last update.

Resultsetのnext()を、次があるかの判定メソッドと勘違いしていた件

Posted at

事象

とあるコードで、SELECTクエリを投げ、
その取得結果をResultSet型の変数rsetに格納している箇所がありました。

コード読解のためrsetの要素数を確認したいと思ったので、
以下のコードを途中に追記して実行しました。

example.java
int testIndex = 0;
while(rset.next()){
    System.out.println("rsetの要素数を確認したい");
    System.out.println(++testIndex);
}

そうしたら、(それまでは正常終了していたのですが、)
その後ろの処理で、以下の例外が発生しました。

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

読解のはずが壊してしまっていた

おかしいなと思って見てみたら、next()の理解が誤っていました。
現在の位置から次の1行へ進んでカーソルを当てる機能もあるのですね。

上記のコードで、最後の要素にカーソルがあたったままループを抜けたので、
後続のrsetで、次にカーソルがあたる要素がなく、
上記例外発生になってしまっていました。

ResultSetのnext()に気を付けたいと同時に、
読解のために一時追記したコードが悪さをすることもあるのだということを学びました。

参考にさせて頂いた記事

Resultsetのnext()は、"ResultSetの次があるかどうかを判定するメソッド"ではない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0