您将返回一个a
ResultSet以便将来使用,但是在使用它之后,您将关闭连接,因此由于资源已关闭,因此您无法检索数据。请注意
finally,即使您在
try或
catch代码块中返回了某些内容,也始终会调用它,
详细来说,这就是问题所在:
- 打开连接
- 准备一份声明
- 获取结果集
- 返回结果集
- 关闭连接(可能会关闭关联的资源,即可能会关闭
PreparedStatement
和ResultSet
当前资源的关联Connection
),因为正如前面的链接中所述, 始终* 至少在JVM崩溃的情况下执行finally
块,或者使用手动完成应用程序。 *System.exit
- 使用封闭式
ResultSet
。由于上一步已关闭。
一个可能的解决方案是您的
countdrcountcr方法和所有其他返回a的方法都
ResultSet接收
Connectionas参数,因此调用它的方法将处理连接的打开和关闭。另外,请注意,
static如果您在多线程环境(例如Web应用程序)中工作,则不应使用方法来处理数据库操作。



