Java 获得';结果集已关闭';第二次运行查询时
我试图传递一个sql查询,但得到“java.sql.SQLException:结果集关闭后不允许操作”。我已经在stackoverflow中进行了基于相同异常的其他对话,但我仍然不理解这个问题 代码如下:Java 获得';结果集已关闭';第二次运行查询时,java,jsp,jdbc,Java,Jsp,Jdbc,我试图传递一个sql查询,但得到“java.sql.SQLException:结果集关闭后不允许操作”。我已经在stackoverflow中进行了基于相同异常的其他对话,但我仍然不理解这个问题 代码如下: String query="SELECT candidate,pan from hcl_candidates where jngstat='Joined'"; statement=conn.createStatement(); resultset=statement.executeQu
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
问题在于在同一语句对象上的
循环中执行executeUpdate
。这违反了政府的期望
PS:您应该首先关闭结果集、语句,然后关闭连接。重新执行语句
关闭先前的结果集
很难理解您认为自己在这里做什么,在一个不依赖于循环更改的任何内容的循环中执行语句
注意SQLException
除了“无法连接”之外,还可能意味着很多事情。您好,我添加了堆栈跟踪…请告诉我您是否知道任何,而循环不会“违反语句”
类。它本身不是while循环。我的意图是说,在同一个语句
对象上执行executeUpdate
导致了问题。请参阅《Oracle文档》中的声明
类别我同意。它本身不是while
循环。但这就是你的答案。如果还有更多,它应该出现在你的答案中。谢谢你的建议,我现在把它包括在了答案中。谢谢你指出了这个循环,现在它起作用了。。我本应该删除它,但它一定是我忽略了:)你的程序没有被阻止。