事象
とあるコードで、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()に気を付けたいと同時に、
読解のために一時追記したコードが悪さをすることもあるのだということを学びました。