次のスニペットは、データベースから写真の名前を取得します。
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/photog");
Connection connection = ds.getConnection();
String sqlQuery = "select nameofthephoto from photocaptions where useremail='" + email + "'";
PreparedStatement statement = connection.prepareStatement(sqlQuery);
set = statement.executeQuery();
if(set == null) {
System.out.println("set is null !");
} else if(set != null) {
System.out.println("set is not null !");
System.out.println(set.next());
System.out.println(set.getString("nameofthephoto")); // last statement
}
else-if ブロックが実行されます
コードの最後の 2 つのステートメントの結果は次のとおりです。
false
最後のステートメントは例外をスローします。
java.sql.SQLException: 現在のカーソル位置での操作が無効です。
表には、クエリに一致する「データ行」が 1 つしかありませんwhile.next()
。では、なぜ上記のスニペットの最後のステートメント (スタックトレースがこれを示している) が例外をスローするのでしょうか?_