java - 关闭连接会自动关闭语句和结果集吗?

标签 java database database-connection prepared-statement

我知道 Java 中的安全模式是在 finally block 中按顺序关闭您的 ResultSet、Statement 和 Connection。

如果你关闭连接然后尝试关闭语句(不抛出异常)。但是,如果您尝试从语句中调用任何方法,则会引发异常。

我想知道关闭连接是否会自动关闭从该连接创建的所有语句对象?

更新:
我正在使用 DatabaseProductVersion:Oracle 数据库 11g 版本 11.1.0.0.0
DriverName:Oracle JDBC驱动
驱动程序版本:10.2.0.4.0

最佳答案

是的,Connection.close API 说“立即释放此 Connection 对象的数据库和 JDBC 资源,而不是等待它们自动释放”。问题是应用程序通常使用数据库连接池,这些可能只是在 Connection.close 上将连接返回到池。

在任何情况下,始终显式关闭 ResultSet 和 Statement 而不依赖 Connection.close 是一个好习惯。

此外,直接使用 JDBC 并不是最好的主意。你可以使用 Spring JDBC 来代替释放资源的问题。

关于java - 关闭连接会自动关闭语句和结果集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14024311/

相关文章:

java - 如何从休息服务验证用户

php - 不接受数据库查询中的文本值,但只允许数字

php - 尝试调用类中名为 "query"的未定义方法

mysql - 错误号 2003。无法连接到 mysql 服务器

java - 如何在Java中绘制像素完美的旋转矩形?

java - 我们可以使用 java 访问(打开-读/写)驱动程序文件/dev/aaa 吗?

mysql - SQL最大记录数

python - sqlalchemy mysql 连接没有在 flask api 上关闭

php - phpbb3 论坛上的单独 mysql 查询不返回任何内容(mysql 在服务器上,但 phpbb 没有使用它)

java - 垃圾收集器何时会删除使用单例模式的对象的实例?