我知道 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/