MySQL 结果集关闭后不允许进行操作
使用 JDBC 与数据库交互时,小心处理 ResultSet 对象至关重要避免诸如“结果集关闭后不允许操作”之类的异常。当您尝试对已关闭的 ResultSet 执行操作时,会出现此错误。
理解异常
当您尝试迭代ResultSet 在关闭后使用其 next() 方法。发生这种情况是因为关闭 ResultSet 会释放其资源,包括其内部游标,使其无法进行进一步的操作。
关闭结果集的原因
提供的代码中的解决方案
提供的代码中的错误发生在MySQLDonation 类,同时循环浏览捐赠表。当后续 DELETE 查询重新执行该 Statement 时,从 SELECT 查询获得的 ResultSet 将被关闭。
要解决此问题,请将查询执行和结果处理步骤分开:
// In MySQLDatabase class private void handleDonation(Client client, int creditamount) { try (Statement statement = getConnection().createStatement()) { // Execute DELETE query with new Statement statement.executeUpdate(String.format("DELETE ...")); } }
通过为每个查询创建一个新的语句,您可以确保 ResultSet 保持打开状态,直到查询完成。
其他注意
以上是JDBC中为什么会出现'ResultSet关闭后不允许操作”的情况以及如何解决?的详细内容。更多信息请关注PHP中文网其他相关文章!