oracle数据库java.sql.SQLException: 结果集已耗尽,总是跳不出while(rs.next())循环,请求高手帮忙解决!

如题所述

把你的异常信息发出来
rs,ps,conn使用完都不关闭,这会影响后续程序的使用
你是第一次访问就报异常,还是多次访问之后报异常?
先找到你程序里访问数据库的地方,把conn,ps,st神马的使用完都关了看看效果
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-23
你的SQL中有循环么?追问

有,是循环ResultSet的时候把数据封装到对象的时候出错!在网上找了很多资料也都是说是ResultSet游标的问题,但是没有明确的解决方法!不知道你有没有遇到过以及你的解决方法是什么?

追答

你的循环没有结束条件的话 会一直在循环的比如
loop
fetch c_cur into v_a,v_b;
loop;

追问

我已经把访问数据库的封装在一个BaseDao类里面,继承此类查询数据并在while(rs.next())把结果重新封装在一个 entity 里面,在Servlet获取转发到jsp,调试时while(rs.next())和servlet执行完毕之后又重新执行while(rs.next())和servlet,在两者间出现死循环!直接访问就出现java.sql.SQLException: 结果集已耗尽

追答

你有没有 设置 result的取数的回滚游标呢?

追问

这是我写的oracle视图、数据库查询、servlet、目的是想在jsp上面显示出这些数据,小弟刚刚出道,有很多不懂,希望前辈多多指点!谢谢了!

第2个回答  2012-10-23
你的结果集有多大,多少条记录,如果结果集太大还是分页或者分批加载的好追问

是在union all 的集合里面,重新筛选的数据,我把它创建为视图了,目前查询结果就7条数据,查询视图循环的时候报java.sql.SQLException: 结果集已耗尽的错误!

java.sql.SQLException: 结果集已耗尽
<% rs.beforeFirst();\/\/重置结果集,然后重新开始循环 while(rs.next) { 用户序号: 用户名: <input type="text" name="publish_name" size="12" value = "<%rs.getString("publish_name"); %>"> 时间:

...java.sql.SQLException: Operation not allowed after ResultSet cl...
通常一个数据库连接只能同时处理一个数据集,如果在轮询结果集时,又用这个数据库连接进行增删改查的操作,都会导致结果集关闭,可以尝试使用另一个数据库连接来进行增删改查操作

使用jsp连接oracle时,rs.next()值始终为false,表中存在数据
你的sql是不是正确?如果你是用eclipse开发的话,建议你下个断点,这样方便调试。另外,你的代码还有一个问题,数据库连接conn 建议放在finally中关闭,同时结果集rs也要关闭。代码如下:try{ \/\/你的代码 }catch(SQLException ex) { }finally{ rs.close(); stmt.close(); conn.c...

orc-39124数据库报错
可能原因:1>驱动名称不对 2>没有导入数据库驱动包 2、SQl 语句中可以使用任何有效的函数,函数操作的列,必须指定别名,否则会出现 java.sql.SQLException: 列名无效 3、java.sql.SQLException: 无效的列索引:sql串里面?号的数目和提供的变量数目不一致 4、java.sql.SQLException: 结果集已耗尽 操作...

JAVA程序,关于while只循环一次的问题
while(newrs1.next())这个语句的意思应该是newrs1.next()这个结果集不为空。而不是你想象的循环!这里就只判断一次,而不是循环判断。要想输出,可以将list的值装到一个数组当中,然后用for或者while循环输出就可以了。

...出现错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver...
但是现在出现了问题,这其中一种最优可能的原因是你擅自把在这个函数中的某些个变量比如Driver定义在了函数访问不到的地方,比如主函数中,这就有可能导致出错。其实你应该把出问题的那个项目贴出来,大家才能帮得到你。不然你让大家一顿猜,很难找到真正出错的原因。

不使用数据库怎么在页面上实现分页显示
1.针对Oracle数据库步骤如下:a.根据所使用的数据库特性来组织sql进行分页。b.每次跳转页面的sql查询都不相同。 通用的sql分页方式,“限制行数结果集的倒序”分页,步骤如下: (1).取得符合条件的所有结果集中可以唯一标识的Key值(通常是主键),并正向排序。 (2).利用数据库提供的特殊方法进行“最大结果集”的...

java应用程序操作oracle数据库的问题
import java.sql.*;public class TextOracle_AddTemplate { public static void main(String ags[]){ add();} public static void add(){ Connection ct = null;\/\/与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果 PreparedStatement ps = null;\/\/表示预编译的 SQL 语句的对象...

java语句到这里异常:ResultSet rs = ps.executeQuery();
你自己注释的很明白了 \/\/executeQuery()方法会把数据库响应的查询结果存放在ResultSet 这是查询方法,是用来查询的,数据库会吧查询的结果集放在这个ResultSet里面 修改用executeUpdate这个方法

java操作mysql 用结果集删除,deleteRow()能执行,但数据库没变动,不知...
你在执行删除之后需要调用updaterow()。就可以看到数据库中的数据变换了。原因是你使用删除方法之后只是删除了结果集中的数据,但是数据库并没有删除,当你在删除之后在调用更新操作的时候就把结果集中的数据更新回数据库中去,这是数据库中就相当于执行了删除操作就可以看到数据发生变化了。

相似回答