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) 展开
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) 展开
2个回答
展开全部
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更新
你上面的
nt i=sumI.next();
sqlOrder1="update class_one_grades_mysql set sum="+i;
Method.print(sqlOrder1);
Handle_Access.stat.executeUpdate(sqlOrder1);
为什么要在while循环里面,最后结果是sum1的长度吧,可以就更新一次吧
可以先把长度保存下,关闭上一个查询,再进行下一个sql更新
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询