获取'结果集已关闭'第二次运行查询时

时间:2016-05-02 07:43:08

标签: java jsp jdbc

我试图传递sql查询但是我得到了#34; java.sql.SQLException:在ResultSet关闭后不允许操作" 。我在stackoverflow中基于相同的异常进行了其他对话,但我仍然不理解这个问题。

以下是代码:

String query="SELECT candidate,pan from hcl_candidates where    jngstat='Joined'";

statement=conn.createStatement();
resultset=statement.executeQuery(query);

while(resultset.next()){

statement.executeUpdate("insert IGNORE into allinvoice       (candidate,pan,invdate,client) select candidate,pan,CURDATE(),'HCL' from hcl_candidates where jngstat='Joined'");
}
}

//catch block

finally 
{
try
{

if(statement!=null)
{
statement.close();
}
if(conn!=null){
 conn.close();
 }

if(resultset!=null){
resultset.close();
 }
}
 // catch block
 }

这是错误:

java.sql.SQLException: Operation not allowed after ResultSet closed
//So on

2 个答案:

答案 0 :(得分:0)

重新执行Statement会关闭先前的结果集。

很难理解你认为你在这里做了什么,在循环中执行一个不依赖于循环变化的语句。

注意除了“无法连接”之外,SQLException可能意味着很多事情。

答案 1 :(得分:-1)

问题在于在同一Statement对象的executeUpdate循环中执行while。这违反了Statement class的期望。

PS:您应首先关闭结果集,Statement,然后关闭Connection。