2013-01-20 94 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