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

结果集未正确关闭

伊裕
2023-03-14
java prettyprint-override">ResultSet rsSel = null;
// preparated statemen
PreparedStatement stmtSel = null;
// preparated statemen
PreparedStatement stmtUpd = null;
try {
  //create query yyyyyyyy
  String query = SQLStatements.getStatement("queryExample");

  //create PreparedStatement
  stmtSel = (PreparedStatement) conn.prepareStatement(query);

  int index = 1;
  // WHERE:
  stmtSel.setInt(index++, prog);
                                    
  // SELECT:
  rsSel = stmtSel.executeQuery(); //the problem is here
  rsSel.next();  
  //close finally          
  rsSel.close()
finally{
  close(stmtSel);
close(rsSel);
}

               
Closing a result set you left open! Please close it yourself.: java.lang.Throwable: STACKTRACE

有人能帮我吗?

共有1个答案

沙小白
2023-03-14

该错误是由太宽的范围、隐藏的异常或控制流中的某些怪癖引起的。最好是使用try-with-resources,它也在返回/中断/异常时关闭。那么你就会:

String query = SQLStatements.getStatement("queryExample");
try (PreparedStatement stmtSel = conn.prepareStatement(query)) {
    int index = 1;
    stmtSel.setInt(index++, prog);
    ...
    try (ResultSet rsSel = stmtSel.executeQuery()) {
        if (rsSel.next()) {
            ...
        }
    } // Closes rsSel
} // Closes stmtSel

假设导入java.sql.PreparedStatement,则不需要转换为PreparedStatement。

对了:

 类似资料:
  • 我正在处理一个需要使用jFileChooser Swing窗口的项目。当单击“取消”或“打开”时,窗口不会关闭。在查看了StackOverflow上的许多文章以及JFileChooser教程和文档之后,我不知道是什么导致了这个重复的问题。 我正在与NetBeans一起使用它的swing编辑器。我也在Eclipse中尝试了该程序作为测试,并收到了相同的结果。

  • 不确定我是不是漏掉了什么。 如有任何建议,将不胜感激。

  • 我正在做一些性能评估的Java阿格拉捷操作,以迭代集合。我正在评估和的性能。但是我发现的输出大多数时候都是错误的。例如,在下面的代码中,有80%以上的时间输出错误: 我的问题是:我是否以错误的方式使用了?是否有任何方法可以确保的正确性。谢谢

  • 问题内容: 我有一个存储过程,它检查用户是否已经存在,无论用于电子邮件的输入是什么,它随数据库的第一行一起返回。如果我手动运行select语句,我将得到正确的结果。有什么建议吗? 问题答案: 您的问题无疑在这里: 白衣 您的参数名称与列名称相同。这 可 实际工作,但规则使它这样做可能是怪异。(我认为,如果您更改引号,它可能会起作用)。 但是实际上,您应该做的是将参数重命名为其他名称:

  • 请给我一些灯。下面是我的代码:

  • 问题内容: 我想转换成 我用了 但是我明白了 问题答案: 每月使用CAPITAL M, 另外,您首先要设置日期,然后再重置日历,我想这不是您想要的,可能是因为您需要将其更改为以下内容 看到 API文件