Java - 处理“ResultSet 关闭后不允许操作”异常
关闭 MySQL 连接时,可能会遇到错误“Operation not结果集关闭后允许。”发生这种情况是因为 JDBC 逐渐检索查询结果,为您提供一个 ResultSet,当连接关闭时该 ResultSet 将变得无效。
异常原因
您返回的 ResultSet您的方法依赖于打开的连接。当您关闭finally块中的连接时,ResultSet将变得不可用,从而导致异常。
解决方案
创建一个使用以下方法而不是返回ResultSet它用于填充一个对象或对象集合。然后,返回填充的对象或集合。
重构代码
以下代码显示了您的方法的修改版本:
<code class="java">public static List<T> sqlquery(String query, RowMapper<T> rowMapper) throws SQLException { Connection connection = DriverManager.getConnection("databaseadress", "username", "password"); Statement st = connection.createStatement(); ResultSet rs = st.executeQuery(query); List<T> list = new ArrayList<>(); while (rs.next()) { list.add(rowMapper.mapRow(rs)); } try { rs.close(); st.close(); connection.close(); } catch (SQLException e) { log.info(e); } return list; }</code>
使用 RowMapper
RowMapper 接口用于将 ResultSet 的每一行映射到一个对象。您可以根据要填充的对象创建自己的 RowMapper 实现。
好处
这种方法:
结论
为了避免“ResultSet 关闭后不允许操作”异常,请修改代码以使用 RowMapper 填充对象或集合并返回它们而不是 ResultSet。这种方法可确保您的方法在连接关闭后保持功能。
以上是Java中如何处理'ResultSet关闭后不允许操作”异常?的详细内容。更多信息请关注PHP中文网其他相关文章!