Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.sql.SQLException:耗尽的结果集_Java_Sql_Oracle_Jdbc - Fatal编程技术网

java.sql.SQLException:耗尽的结果集

java.sql.SQLException:耗尽的结果集,java,sql,oracle,jdbc,Java,Sql,Oracle,Jdbc,我得到错误java.sql.SQLException:expeated ResultSet以对Oracle数据库运行查询。连接是通过Websphere中定义的连接池进行的。执行的代码如下所示: if(rs!=null)( while(rs.next())( 计数=rs.getInt(1); ) ) 我注意到resultset包含数据(rs.next()) 谢谢试试这个: if (rs != null && rs.first()) { do { count

我得到错误java.sql.SQLException:expeated ResultSet以对Oracle数据库运行查询。连接是通过Websphere中定义的连接池进行的。执行的代码如下所示:

if(rs!=null)(
while(rs.next())(
计数=rs.getInt(1);
)
)
我注意到resultset包含数据(rs.next())

谢谢

试试这个:

if (rs != null && rs.first()) {
    do {
        count = rs.getInt(1);
    } while (rs.next());
}

我在处理结果集后尝试访问列值时看到此错误

if (rs != null) {
  while (rs.next()) {
    count = rs.getInt(1);
  }
  count = rs.getInt(1); //this will throw Exhausted resultset
}

希望这将对您有所帮助:)

这通常发生在stmt被重用时,但希望得到不同的结果集,请尝试创建新的stmt并执行任务。它帮我修好了

如果使用
rs.absolute(1)
将结果集重置为顶部,则不会得到呼出的结果集

while (rs.next) {
    System.out.println(rs.getString(1));
}
rs.absolute(1);
System.out.println(rs.getString(1));

您也可以使用rs.first()而不是rs.absolute(1),它的作用相同。

请确保res.getInt(1)不为空。 如果可以为null,则使用整数计数=null和not int count=0

Integer count = null;
    if (rs! = null) (
                    while (rs.next ()) (
                        count = rs.getInt (1);
                    )
                )

当没有从数据库返回特定条件的记录时,以及当我尝试访问rs.getString(1)时;我得到了这个错误“耗尽的结果集”

在发布之前,我的代码是:

rs.next();
sNr= rs.getString(1);
修复后:

while (rs.next()) {
    sNr = rs.getString(1);
}

在while循环之外使用ResultSet时会发生此异常。请将与结果集相关的所有处理保留在While循环中。

错误背后的问题:如果您试图访问Oracle数据库,则在事务成功之前无法访问插入的数据,并且要完成事务,您必须在插入将数据输入到表中。因为Oracle数据库默认情况下不处于自动提交模式

解决方案:

转到SQL PLUS并执行以下查询

SQL*Plus: Release 11.2.0.1.0 Production on Tue Nov 28 15:29:43 2017

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Enter user-name: scott
Enter password:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> desc empdetails;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ENO                                                NUMBER(38)
 ENAME                                              VARCHAR2(20)
 SAL                                                FLOAT(126)

SQL> insert into empdetails values(1010,'John',45000.00);

1 row created.

SQL> commit;

Commit complete.

出现此错误是因为您在resultSet.next()方法之前使用了resultSet

要获得计数,只需使用以下命令:

while(rs.next()) `{ 计数=rs.getInt(1); }


您将获得结果。

读取结果集时语句或连接是否已关闭?@Arne:这可能会引发
SQLException:ResultSet已关闭。
。以后,添加堆栈跟踪并指向该行。看到被接受的答案,抛出的那一行绝对不在你在问题中发布的代码中。你应该多练习解释stacktraces。我删除了我的答案。是的,绝对不在代码中,因为我认为:-)我一直看到这个错误是由相同的问题引起的。简单明了,谢谢它会为其他数据库(如mysql、sql server等)创建相同的异常吗?我不知道。可能是的。我认为这取决于数据库供应商:-)在“!=”之间有空格不允许:)谢谢。我改变了答案。