PreparedStatement、ResultSet和Connection关闭问题

没事眯一会 2011-07-03 07:03:10
我看到一段代码 :PreparedStatement、ResultSet和Connection。打开顺序是Connection、ResultSet 、PreparedStatement,用的是jdbc连接( JDBCDataSource.getJDBCDataSource("jdbc.informix").getConnection();)先关闭ResultSet,再关闭PreparedStatement,不关闭ResultSet,这样会不会有问题。
...全文
1044 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dandongsoft 2013-10-18
  • 打赏
  • 举报
回复
五楼的说的很明白,关闭最好按顺序来,resultset preparedstatement,connection按这个顺序关闭
dandongsoft 2013-10-18
  • 打赏
  • 举报
回复
五楼的说的很明白,关闭最好按顺序来,resultset preparedstatement,connection按这个顺序关闭
dandongsoft 2013-10-18
  • 打赏
  • 举报
回复
五楼的说的很明白,关闭最好按顺序来,resultset preparedstatement,connection按这个顺序关闭
8c8m 2011-07-04
  • 打赏
  • 举报
回复
最好还是按照Result,PreparedStatement,Connection顺序进行关闭
humanity 2011-07-04
  • 打赏
  • 举报
回复
按要求关闭吧,我用过 Sybase 的驱动,没自己关闭 ResultSet 和 Statement 的时候还是导致连接被用尽,可能 JDBC 2.0 和 3.0 在细节上还是有点差别,我们最好是把自己应该做的事情自己做了,而不要指望自动去做,不同的实现版本可能细节不同,依赖实现细节的代码会碰到移植性的问题,而且很难查觉错误在哪里。
淫生杯具 2011-07-04
  • 打赏
  • 举报
回复
五楼的说的很明白,关闭最好按顺序来,resultset preparedstatement,connection按这个顺序关闭
zousir18 2011-07-04
  • 打赏
  • 举报
回复
分少有人来的!
riyuezhizhi 2011-07-04
  • 打赏
  • 举报
回复
四楼说得很详细,学习了
宁波朱超 2011-07-03
  • 打赏
  • 举报
回复
四哥V5
龙四 2011-07-03
  • 打赏
  • 举报
回复
但是最好按照以下顺序关闭:rs(同一个连接有多个rs在每个就用完之后就立即close),stmt(同rs),conn


原因如下:
The JDBC spec requires that a Connection close any open Statement's when it is closed

JDBC规范要求关闭连接的时候同时关闭任何与其关联的打开的Statement

一般情况下关闭close都没问题

但是,如果碰到一个不负责任的数据库连接池就不好说了

连接池重写了Connection了close方法,当调用这个方法时不关闭底层连接,而是将连接放回池中。一个负责任的连接池都应该在此时将rs和stmt物理关闭,不负责任的就可能没有将rs和stmt关闭,直接将conn丢回池中,最终可能导致OutOfMemory

在dbcp中重写的close方法里就passivate这样一个方法调用,就是用来关闭rs和stmt的
龙四 2011-07-03
  • 打赏
  • 举报
回复
只要关闭connection,其他的都会被关闭

当然如果你在循环里用同一个connection查询处理多个结果集,那么你可能需要考虑在用完每个结果集后关闭它们
宁波朱超 2011-07-03
  • 打赏
  • 举报
回复
打开顺序:
Connection
PreparedStatement
Result

关闭顺序:
Result
PreparedStatement
Connection

PS:我认为其实关闭的时候直接关闭Connection也就行了,没事。(欢迎对这个结论拍砖
star95hmz 2011-07-03
  • 打赏
  • 举报
回复
关闭是节省资源。最好是按顺序关掉
没事眯一会 2011-07-03
  • 打赏
  • 举报
回复
分少没人来吗 ~~~~(>_<)~~~~

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧