首页 > 数据库 > mysql教程 > 如何解决'java.sql.SQLException:结果集关闭后不允许操作”?

如何解决'java.sql.SQLException:结果集关闭后不允许操作”?

Mary-Kate Olsen
发布: 2024-12-03 14:21:13
原创
258 人浏览过

How to Solve

“java.sql.SQLException:ResultSet 关闭后不允许操作”的结果集重用解决方案

遇到“java.sql.SQLException: ResultSet 关闭后不允许操作”的解决方案

SQLException: ResultSet 关闭后不允许操作”错误,这表明同一语句对象同时使用多个结果集。这违反了 Statement 类的默认期望,即一次只允许打开一个 ResultSet。

要在提供的代码中解决此问题,应采取以下步骤:
  • 在 getStuff() 方法中:

在提取必要的数据后必须关闭 ResultSet 对象 rs 以避免与其他冲突ResultSets。

  • 在调用代码中:
  • ResultSet 对象 rs 也必须关闭以释放其与语句对象的关联。

一个新的应创建PreparedStatement 对象来执行更新查询。这可确保原始 ResultSet 对象不受影响。

try {
    //Get some stuff
    String name = "";
    String sql = "SELECT `name` FROM `user` WHERE `id` = " + userId + " LIMIT 1;";
    ResultSet rs = statement.executeQuery(sql);
    if (rs.next()) {
        name = rs.getString("name");
    }
    rs.close();  // Close the ResultSet 'rs'

    String sql2 = "SELECT `id` FROM  `profiles` WHERE `id` =" + profId + ";";
    ResultSet rs2 = statement.executeQuery(sql2);
    String updateSql = "INSERT INTO `blah`............";
    PreparedStatement pst = (PreparedStatement) connection.prepareStatement(updateSql);

    while (rs2.next()) {
        int id = rs2.getInt("id");
        int stuff = getStuff(id);

        pst.setInt(1, stuff);
        pst.addBatch();
    }
    rs2.close();  // Close the ResultSet 'rs2'

    pst.executeBatch();

} catch (Exception e) {
    e.printStackTrace();
}

private int getStuff(int id) {

    try {
        String sql = "SELECT ......;";
        ResultSet rs = statement.executeQuery(sql);

        if (rs.next()) {
            int result = rs.getInt("something");
            rs.close();  // Close the ResultSet 'rs' in 'getStuff' method
            return result;
        }
        return -1;
    }//code continues
}
登录后复制

经过这些修复的修改后的代码将如下所示:

通过实现这些更改,代码可确保所有 ResultSet正确关闭,防止出现“java.sql.SQLException:ResultSet 关闭后不允许操作”错误。

以上是如何解决'java.sql.SQLException:结果集关闭后不允许操作”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板