首页 > 数据库 > mysql教程 > 为什么我的 Java JDBC MySQL 代码抛出'结果集关闭后不允许操作”?

为什么我的 Java JDBC MySQL 代码抛出'结果集关闭后不允许操作”?

Patricia Arquette
发布: 2024-11-27 13:56:09
原创
273 人浏览过

Why Does My Java JDBC MySQL Code Throw

Java JDBC MySQL 异常:“结果集关闭后不允许操作”

尝试对关闭的结果集进行操作时通常会发生此错误。让我们分析提供的代码来确定异常的原因。

数据库初始化

MySQLDatabase 类在 connect() 方法中建立与数据库的连接。语句变量是用connection.createStatement()初始化的。但是,此语句在所有数据库操作中共享,包括选择和更新查询。

捐赠处理

MySQLDonation 类循环遍历“捐赠”表并处理捐赠记录。 while循环迭代从query("SELECT * FROM gieli436_purchases.donations")语句获得的ResultSet。

异常原因

发生错误的原因是使用了语句检索 ResultSet 还用于执行删除查询,这会关闭之前的 ResultSet。因此,对关闭的 ResultSet 的后续 next() 调用会抛出“ResultSet 关闭后不允许操作”异常。

解决方案

要解决此问题,请创建每个查询执行一个新的语句。修改MySQLDatabase类,删除statement = connection.createStatement();来自连接()。将类中的所有statement实例替换为connection.createStatement()。

更正

// MySQLDatabase class
// Remove statement = connection.createStatement();
// Replace statement with connection.createStatement()

// MySQLDonation class
// Remove private variable statement

// Query execution
results = connection.createStatement().executeQuery("SELECT * FROM gieli436_purchases.donations");

// Delete execution
connection.createStatement().executeUpdate(String.format("DELETE FROM gieli436_purchases.donations WHERE donations.username='%s' LIMIT 1", client.playerName.replaceAll(" ", "_")));
登录后复制

通过为每个查询创建单独的Statement,您可以确保ResultSet处理期间保持打开状态,防止异常。

以上是为什么我的 Java JDBC MySQL 代码抛出'结果集关闭后不允许操作”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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