ResultSet is closed ;我根本就没调用关闭操作啊

java.sql.SQLException:ResultSetisclosedatsun.jdbc.odbc.JdbcOdbcResultSet.checkOpen(Jd... java.sql.SQLException: ResultSet is closed
at sun.jdbc.odbc.JdbcOdbcResultSet.checkOpen(JdbcOdbcResultSet.java:6646)
at sun.jdbc.odbc.JdbcOdbcResultSet.next(JdbcOdbcResultSet.java:1249)

部分代码:
try {
Handle_Access.rs=Handle_Access.stat.executeQuery(sqlOrder);//构建结果集新RS,使其指向表格第一行
String sqlOrder1=null;
Iterator<Integer>sumI=sum.iterator();//迭代器遍历集合
while(sumI.hasNext()&&Handle_Access.rs.next()){//Handle_Access.rs.next();//控制指向表格行的指针,每次循环往下移一行
int i=sumI.next();
sqlOrder1="update class_one_grades_mysql set sum="+i;
Method.print(sqlOrder1);
Handle_Access.stat.executeUpdate(sqlOrder1);
Method.print(":::"+sqlOrder1);
}
} catch (SQLException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
Method.print(":::");
}
:就是while循环中的next位置报错了

at sun.jdbc.odbc.JdbcOdbcResultSet.next(JdbcOdbcResultSet.java:1249)
展开
 我来答
hanwei_0311
2012-11-28 · TA获得超过292个赞
知道小有建树答主
回答量:178
采纳率:100%
帮助的人:134万
展开全部
Handle_Access.stat这个执行了executeUpdate,正常情况下如果使用Statement执行完一个查询,又去执行另一个查询时这时候第一个查询的结果集就会被关闭,也就是说,所有的 Statement的查询对应的结果集是一个,如果调用Connection的commit()方法也会关闭结果集.

你上面的
nt i=sumI.next();
sqlOrder1="update class_one_grades_mysql set sum="+i;
Method.print(sqlOrder1);
Handle_Access.stat.executeUpdate(sqlOrder1);

为什么要在while循环里面,最后结果是sum1的长度吧,可以就更新一次吧
可以先把长度保存下,关闭上一个查询,再进行下一个sql更新
淡漠佳阳coff7
2012-11-28
知道答主
回答量:43
采纳率:0%
帮助的人:20.1万
展开全部
while 循环里的条件有问题
如果说每次循环往下移一行 的话,这个逻辑 是有问题的rs.next()除了返回boolean 值同时也会把指针下移,你条件判断的时候移了一次,在循环里又移了一次,猜想你报这个错误的原因可能就是最后的那个临界记录出的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式