是否有JDBC驱动程序在关闭语句时无法关闭ResultSet?

是否有JDBC驱动程序在关闭语句时无法关闭ResultSet?,jdbc,Jdbc,很明显: 如果存在打开的对象,则语句接口中的所有执行方法都会隐式关闭语句的当前ResultSet对象 当关闭语句对象时,其当前的结果集对象(如果存在)也将关闭 但是,无论是在堆栈溢出还是在web上,都有多种建议在语句之前关闭ResultSet。是否存在已知的情况(可能是由于错误的驱动程序)关闭语句而不是ResultSet会导致问题?错误的JDBC驱动程序可能无法关闭ResultSet。无论如何,最好是具体和有意的,所以您应该在try…finally块中关闭您的结果集。如果您使用的是JDK7,那么

很明显:

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

当关闭
语句
对象时,其当前的
结果集
对象(如果存在)也将关闭


但是,无论是在堆栈溢出还是在web上,都有多种建议在
语句之前关闭
ResultSet
。是否存在已知的情况(可能是由于错误的驱动程序)关闭
语句而不是
ResultSet
会导致问题?

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

OP明确询问是否存在已知的有缺陷的JDBC驱动程序。这个答案只是重复了这个问题。在任何情况下,Oracle和Mysql都会在语句关闭时可靠地关闭ResultSet。