Java JDBC resultSet.next问题

时间:2017-07-30 18:54:24

标签: java jdbc spring-jdbc

我的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");
           }

3 个答案:

答案 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()){ }