我看到一段代码 :PreparedStatement、ResultSet和Connection。打开顺序是Connection、ResultSet 、PreparedStatement,用的是jdbc连接( JDBCDataSource.getJDBCDataSource("jdbc.informix").getConnection();)先关闭ResultSet,再关闭PreparedStatement,不关闭ResultSet,这样会不会有问题。
解决方案 »
- 求后台解码问题!
- jsp如何获取java程序值?
- response.sendRedirect 时可以全屏吗
- 我的问题
- 可不可以在java的应用程序里,点一个按钮即链接打开一个网页?如一个按钮,点击,即打开ie,网址http://www.csdn.net?
- 有一个简单的题请大家看一下,应该是web.xml配置出的问题,但是我找不出原因来。
- 请教一个有关 压缩上传图像大小(物理空间大小)的问题
- 怎样屏蔽IE浏览器的滚动条
- 求助!tomcat下遇到wma文件不能下载是为什么?如何解决呢?
- 问一个简单的问题,怎么样把ResultSet rs,rs当中某列的数据放到数组当中去?
- 修改JSP后tomcat会自动重启, 控制台自动清空, Extjs有关
- jsp中实现帖子浏览量的统计,急急急
Connection
PreparedStatement
Result关闭顺序:
Result
PreparedStatement
ConnectionPS:我认为其实关闭的时候直接关闭Connection也就行了,没事。(欢迎对这个结论拍砖)
原因如下:
The JDBC spec requires that a Connection close any open Statement's when it is closedJDBC规范要求关闭连接的时候同时关闭任何与其关联的打开的Statement一般情况下关闭close都没问题但是,如果碰到一个不负责任的数据库连接池就不好说了连接池重写了Connection了close方法,当调用这个方法时不关闭底层连接,而是将连接放回池中。一个负责任的连接池都应该在此时将rs和stmt物理关闭,不负责任的就可能没有将rs和stmt关闭,直接将conn丢回池中,最终可能导致OutOfMemory在dbcp中重写的close方法里就passivate这样一个方法调用,就是用来关闭rs和stmt的