当前位置: 首页 > 知识库问答 >
问题:

java异常:结果集关闭后不允许操作

景唯
2023-03-14

下面是相关的代码部分:Server. Proxy.update_allLogOut:(第65行是时括号)

    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%的运行时间都没有例外。。但有几次我遇到了这个例外,我不明白为什么会发生这种情况。有什么想法吗?很明显,有些地方做错了,但这里所有类似的主题都没有给出这个问题的答案。。。

共有2个答案

巩子实
2023-03-14

我不确定这个街区:

    stmt = conn.createStatement();
    rs = stmt.executeQuery("SELECT * FROM sysuser WHERE login=1");
    while(rs.next())
    {
        stmt.executeUpdate("UPDATE sysuser SET login=0");
    }
    rs.close();

是个好主意。为什么不执行简单的查询:更新sysuser SET login=0,其中login=1?

此外,在内部使用相同的stmt,而在循环-这是一个很大的错误。

冯通
2023-03-14

您正在使用stmt来迭代选择的结果,并在循环内更新。这不起作用,因为从执行更新的那一刻起,与选择关联的结果集就关闭了。

要修复,请使用两个单独的语句对象。

 类似资料:
  • 我已经为此工作了将近一天半,我似乎无法解决这个错误。我不知道为什么结果集被关闭。也许你们中的一些人可以帮我。 MySQL数据库: MySQLHandler MySQLDonation 异常发生在这里:在MySQLDonation和实际堆栈跟踪的同时循环中: 有了这些信息,让我说这确实有效,我得到了我的信息和游戏中没有的东西,但它会重复,就像用户永远不会从查询中删除,所以它会给他们无限的奖励。如果您

  • 我试图为通过html形式的文本框检索的查询编写一个JUnit测试。文本检索已经过测试并有效,但我的单元测试失败了。我使用了两个相关的类:QueryController和QueryControlllerTest。我一直在玩弄我在这两个类中关闭的时间和内容,并不断得到错误:结果集关闭后不允许操作。 QueryController测试。Java语言 QueryController。Java语言

  • 我是java和SQL新手,我在重复一个我不知道如何避免的问题: 假设我想创建两个执行查询,一个在getRequest estsFromDB方法中的另一个内部,我创建第一个执行查询,在第二个方法中,我创建第二个执行查询: 第二个功能: 在第二个循环中,我得到了一个SQLException:“ResultSet关闭后不允许操作”,我尝试了:最后用result关闭结果。close()但我也得到异常nul

  • 单击按钮时,此代码显示此错误消息: 结果集关闭后不允许操作 代码:

  • 我正在使用Prepared语句进行我的SELECT查询。之后,我试图从结果集获取信息,并将其放入数组列表中。我正在将其放入结果集循环,但我得到了一个错误。sql。SQLException:结果集关闭后不允许操作。我试图用rs.close()关闭它,但它给了我同样的错误。这是我的方法。请帮忙!

  • 问题内容: 我已经为此工作了将近一天半,但似乎无法解决此错误。我不知道为什么ResultSet被关闭。也许有些人可以帮助我。 MySQL数据库: MySQLHandler MySQL捐赠 异常发生在这里:在MySQLDonation的while循环中,实际的堆栈跟踪是这样的: 有了这些信息,我可以说这 确实 有效,我得到了我的信息,但不是游戏中的内容,而是重复出现的内容,就像用户从未从查询中删除一