当前位置: 技术问答>java相关
请教jdbc得简单问题,送分啦
来源: 互联网 发布时间:2015-06-13
本文导语: 请问Result is closed错误是怎么回事? 比如: Result rs=Stmt.executeQuery(sql); while(rs.next()) { sql1="select .........."; Result board_rs=Stmt.executeQuery(sql1); 就出...
请问Result is closed错误是怎么回事?
比如:
Result rs=Stmt.executeQuery(sql);
while(rs.next()) {
sql1="select ..........";
Result board_rs=Stmt.executeQuery(sql1);
就出现500 servlet exception
java.sql.SQLException: ResultSet is closed
求救!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
比如:
Result rs=Stmt.executeQuery(sql);
while(rs.next()) {
sql1="select ..........";
Result board_rs=Stmt.executeQuery(sql1);
就出现500 servlet exception
java.sql.SQLException: ResultSet is closed
求救!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
一个statement 只能又一个result
你只用了一个statement,第二局执行是,第一个result就关闭了.
你在床加一个statement,执行第二局的sql就行了
你只用了一个statement,第二局执行是,第一个result就关闭了.
你在床加一个statement,执行第二局的sql就行了
|
嵌套循环最好使用两个stmt这样才可以,要不进入内循环后,将会使前一个关闭.
|
在循环中使用另一个Statement!
Statement Stmt;
Statement Stmt1;
......
Result rs=Stmt.executeQuery(sql);
while(rs.next()) {
sql1="select ..........";
Result board_rs=Stmt1.executeQuery(sql1);
Statement Stmt;
Statement Stmt1;
......
Result rs=Stmt.executeQuery(sql);
while(rs.next()) {
sql1="select ..........";
Result board_rs=Stmt1.executeQuery(sql1);
|
这样好象也不行,我试过,至少用sql server 2000不行
我解决的方法是把第一次查询的东西存数组.......方法有点笨,不过比较实用
我解决的方法是把第一次查询的东西存数组.......方法有点笨,不过比较实用
|
你的第二个resultset是在while循环内部吗?如果是在内部的话,在进行第二个时第一个就会被自动关闭,这是垃圾回收机制的“功劳”
|
试一试以下方法
将
Result board_rs
从循环中移出,在循环内执行:
sql1="select ..........";
board_rs=Stmt.executeQuery(sql1);
//……………
if (board_rs!=null) board_rs.close();
将
Result board_rs
从循环中移出,在循环内执行:
sql1="select ..........";
board_rs=Stmt.executeQuery(sql1);
//……………
if (board_rs!=null) board_rs.close();