java异常: Operation not allowed after ResultSet closed

标签 java sql

我有以下异常: enter image description here

以下是相关代码部分: 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/

相关文章:

java - 删除中点后移动数组中的数字

java - 通过PreparedStatement更改受更新影响的列

java - 无法启动 JBoss 7.1.1 Final

php - 避免跨越重量范围 BETWEEN,两列?数据库

sql - 数据库触发器 : On Insert

php - MySQLI - 对重复的多个用户进行插入或更新

java - 403 拒绝访问 Tomcat 7.0.52 中的指定 url

mysql - 多个连接的多个计数

sql - Postgres View 条件下推不适用于加入

java - 移除\删除绑定(bind)对象