实际上Connection.close只是断开同DB的连接,它实际并没去关闭Statement, ResultSet。之所以说Connection.close后,ResultSet无效,是因为ResultSet的操作之前,会检查连接是否有效。所以如next,first等操作都会出错。其他一些跟数据无关的操作就不会有问题。
一定要close掉ResultSet,否则资源会泄漏,因为ResultSet里有Stream对象,close才会调用Stream.close。规范说明: connection.close 自动关闭 Statement.close 自动导致 ResultSet 对象无效,注意只是 ResultSet 对象无效,ResultSet 所占用的资源可能还没有释放。所以还是应该显式执行connection、Statement、ResultSet的close方法。特别是在使用connection pool的时候,connection.close 并不会导致物理连接的关闭,不执行ResultSet的close可能会导致更多的资源泄露。
一定要close掉ResultSet,否则资源会泄漏,因为ResultSet里有Stream对象,close才会调用Stream.close。规范说明: connection.close 自动关闭 Statement.close 自动导致 ResultSet 对象无效,注意只是 ResultSet 对象无效,ResultSet 所占用的资源可能还没有释放。所以还是应该显式执行connection、Statement、ResultSet的close方法。特别是在使用connection pool的时候,connection.close 并不会导致物理连接的关闭,不执行ResultSet的close可能会导致更多的资源泄露。
1 连续执行两个Statement对象的executeQuery方法时中间是否需要加一个ResultSet对象的Close方法
2 如果不需要,那么其他方法executeUpdate和execute,他们之间相互交叉,例如
executeQuery
............
executeUpdate
或者其他情况是否也同上因为我在jdk1.4.2的chm帮助文件上看到这么一段话,即 ResultSet object is automatically closed by the Statement object that generated it when that Statement object is closed, re-executed翻译出来大致如下:结果集对象当在生成它的语句对象关闭,重新执行时(我提到的这种情况)会自动关闭,所以我认为
连续两个executeQuery方法之间不需要执行ResultSet对象的Close方法
但是建议你不审显示的关闭一下比较好