2013-01-20 72 views
2

JavaDoc for Statement是明确的:关闭Statement时是否存在无法关闭ResultSet的JDBC驱动程序?

在声明接口中的所有执行方法都会隐式关闭statment目前ResultSet对象,如果一个开放的存在。

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

但是,在堆栈溢出和网络上都有多种建议关闭ResultSet之前的Statement。是否有已知的情况(可能是由于越野车司机)关闭Statement而不是ResultSet导致问题?

回答

3

错误的JDBC驱动程序可能无法关闭ResultSet。不管最好是具体还是有意识的,所以你应该在try ... finally块中关闭你的ResultSet。如果您使用的是JDK7,则可以在try子句中声明ResultSet变量,并且由于它实现了AutoCloseable,它将自动关闭,而不会使用finally子句。

+0

OP明确询问是否存在已知的错误的JDBC驱动程序。这个答案只是重申了这个问题。在Statement关闭时,Oracle和Mysql在任何情况下都可靠地关闭ResultSet。 – javadba