我有以下异常:
以下是相关代码部分: Server.Proxy.update_allLogOut:(第65行是while括号)
public void update_allLogOut ()
{
try
{
ResultSet rs;
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM sysuser WHERE login=1");
while(rs.next())
{
stmt.executeUpdate("UPDATE sysuser SET login=0");
}
rs.close();
} catch (SQLException e) {e.printStackTrace();}
}
服务器.服务器:
public Server(int port)
{
super(port);
func.update_allLogOut();
}
主要:
Server sv = new Server(5555);
我必须指出,99% 的情况下它都会毫无异常地运行。但是有几次我遇到了这个异常,但我无法弄清楚为什么会发生这种情况。有任何想法吗?很明显,有些地方做错了,但这里所有类似的主题在这种情况下都没有给出答案......
最佳答案
您正在使用 stmt
迭代 SELECT
的结果并在循环内进行 UPDATE
。这不起作用,因为当您执行 UPDATE
时,与 SELECT
关联的结果集就会关闭。
要修复此问题,请使用两个单独的 Statement
对象。
关于java异常: Operation not allowed after ResultSet closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14405134/