2

JavaDoc forStatement很清楚:

Statement 接口中的所有执行方法都会隐式关闭语句的当前ResultSet对象(如果存在打开的对象)。

当一个Statement对象被关闭时,它的当前ResultSet对象(如果存在的话)也被关闭。

但是,一般而言,在 Stack Overflow 和 Web 上ResultSet都有多项建议要关闭。Statement是否存在已知的情况(可能是由于有错误的驱动程序)关闭Statement但不会ResultSet导致问题?

4

1 回答 1

3

有错误的 JDBC 驱动程序可能无法关闭 ResultSet。无论如何,最好是具体和有意的,因此您应该在 try...finally 块中关闭 ResultSet。如果您使用的是 JDK7,您可以在 try 子句中声明 ResultSet 变量,因为它实现了 AutoCloseable,所以它会在没有 finally 子句的情况下自动关闭。

于 2013-01-20T19:38:35.120 回答