在 Java 中关闭 MySQL 连接时,为什么会收到'java.sql.SQLException:ResultSet 关闭后不允许操作”?

Mary-Kate Olsen
发布: 2024-10-31 11:03:29
原创
743 人浏览过

Why am I getting

在 Java 中关闭 MySQL 连接的问题

问题:

异常,“java.sql.SQLException:操作关闭 ResultSet 后不允许”,关闭与 MySQL 数据库的连接时出现,表明连接后 ResultSet 处理存在问题

代码摘录:

<code class="java">public static ResultSet sqlquery(String query) {
    ResultSet rs = null;
    Connection connection = null;
    Statement st = null;
    try {
        // Establish connection and execute query
    } finally {
        // Attempt to close connection and ResultSet objects
    }
    return rs;
}</code>
登录后复制

说明:

JDBC 不会将所有查询结果检索到 ResultSet立即地。相反,它提供了一个有助于结果检索的对象。但是,当连接关闭时,该对象就会失效。

解决方案:

为了避免这个问题,代码应该在关闭连接之前创建一个对象来存储查询结果。这涉及使用 RowMapper 将 ResultSet 行映射到对象并填充作为方法结果返回的集合。

已解决的代码:

<code class="java">public static <T> List<T> sqlquery(String query, RowMapper<T> rowMapper) {
    Connection connection = null;
    Statement st = null;
    ResultSet rs = null;
    try {
        // Establish connection and execute query
    } finally {
        // Handle possible exceptions gracefully
    }
    while (rs.next()) {
        list.add(rowMapper.mapRow(rs));
    }
    return list;
}</code>
登录后复制

附加说明:

  • 使用RowMapper 使代码更具可重用性和通用性,可用于处理各种数据类型。
  • 考虑参数化查询以防止 SQL 注入攻击。
  • Spring-jdbc 提供了一个强大的解决方案,可以轻松处理 JDBC 操作。

以上是在 Java 中关闭 MySQL 连接时,为什么会收到'java.sql.SQLException:ResultSet 关闭后不允许操作”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!