关闭Statement时是否存在无法关闭ResultSet的JDBC驱动程序?

时间:2013-01-20 19:31:48

标签: jdbc

JavaDoc for Statement很清楚:

  

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

     

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

但是,在Stack Overflow和Web上的ResultSet之前,有多个建议要关闭Statement。是否有已知的情况(可能是由于有缺陷的司机)关闭Statement而不是ResultSet会导致问题?

1 个答案:

答案 0 :(得分:3)

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