问题:
异常,“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>
附加说明:
以上是在 Java 中关闭 MySQL 连接时,为什么会收到“java.sql.SQLException:ResultSet 关闭后不允许操作”?的详细内容。更多信息请关注PHP中文网其他相关文章!