我收到错误 java.sql.SQLException:Exhausted ResultSet 以对Oracle数据库运行查询。连接是通过Websphere中定义的连接池实现的。执行的代码如下:
if (rs! = null) (
while (rs.next ()) (
count = rs.getInt (1);
)
)
我注意到结果集包含数据(rs.next())
由于
答案 0 :(得分:31)
我在处理结果集后尝试访问列值时看到了这个错误。
if (rs != null) {
while (rs.next()) {
count = rs.getInt(1);
}
count = rs.getInt(1); //this will throw Exhausted resultset
}
希望这会对你有所帮助:)。
答案 1 :(得分:4)
试试这个:
if (rs != null && rs.first()) {
do {
count = rs.getInt(1);
} while (rs.next());
}
答案 2 :(得分:2)
如果您将结果集重置为顶部,使用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),它也是如此。
答案 3 :(得分:2)
当没有从数据库返回特定条件的记录时以及当我尝试访问rs.getString(1)时;我收到此错误“耗尽结果集”。
在问题出现之前,我的代码是:
rs.next();
sNr= rs.getString(1);
修复后:
while (rs.next()) {
sNr = rs.getString(1);
}
答案 4 :(得分:2)
在while循环之外使用ResultSet时会发生此异常。请将所有与ResultSet相关的处理保留在While循环中。
答案 5 :(得分:1)
这通常发生在重新使用stmt butexpecting不同的ResultSet,尝试创建新的stmt和executeQuery时。它为我修好了!
答案 6 :(得分:0)
请确保res.getInt(1)不为空。 如果它可以为null,则使用 Integer count = null; 而不是int count = 0;
Integer count = null;
if (rs! = null) (
while (rs.next ()) (
count = rs.getInt (1);
)
)
答案 7 :(得分:0)
错误背后的问题:如果您尝试访问Oracle数据库,则在事务成功之前无法访问插入的数据并且要完成事务,您必须触发{{1将数据插入表后查询。因为Oracle数据库默认情况下不处于自动提交模式。
解决方案:
转到SQL PLUS并按照以下查询进行操作..
commit
答案 8 :(得分:0)
您收到此错误是因为您在resultSet.next()方法之前使用了resultSet。
要获得计数,只需使用它:
while(rs.next()) `{ count = rs.getInt(1); }
你会得到你的结果。