java.sql.SQLException:耗尽的结果集
我得到错误java.sql.SQLException:expeated ResultSet以对Oracle数据库运行查询。连接是通过Websphere中定义的连接池进行的。执行的代码如下所示: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
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等)创建相同的异常吗?我不知道。可能是的。我认为这取决于数据库供应商:-)在“!=”之间有空格不允许:)谢谢。我改变了答案。