我的resultSet为null
System.out.println("ResultSet :" +rs.next());
输出:
ResultSet:false
但是......
if(rs.next() == false) {//condition }
...返回错误:
java.sql.SQLException: Exhausted Resultset
at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:915)
at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:438)
at com.dxc.gameservices.dao.BadgesService.BadgeOne(BadgesService.java:33)
代码:
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("select * from TABLE Where Column1=1 AND column2=4");
if(rs.next() == false) {
System.out.println("Inside IF");
}
else{
System.out.println("Inside ELSE");
}
答案 0 :(得分:2)
此异常意味着您使用两次相同的结果:
java.sql.SQLException:Exhausted Resultset at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:915) 在
您不会显示执行getInt()
的代码,但您可能会执行以下操作:
rs.next();
int value = rs.getInt(index);
int anotherValue = rs.getInt(index);
你做不到。您消耗同一行的两倍。
您必须调用next()
来检索光标的下一行:
while (rs.next()) {
int value = rs.getInt(index);
...
}
答案 1 :(得分:1)
使用此代码
if (rs != null) {
while (rs.next()) {
…
}
}
答案 2 :(得分:0)
请删除系列System.out.println(" ResultSet:" + rs.next());在你尝试办理入住手续之前,因为下一个元素已经被检查了。
while(rs.next()){ }