2014-12-03 10:22题主

关于DbUtil工具类里的连接关闭问题

我在serverScript里或者自己写的java method 中,如果调用DbUtil里的方法,比如execute(HttpServletRequest request, String sql)这个方法,从代码中可以看到调用的Query类,返回了ResultSet,但是我没有看到关闭Connection的操作,这点让我很疑惑,因为webbuilder运行这么长时间没有问题,不可能没有关闭数据库连接,所以我想请问各位老师,关闭操作在哪里执行的?我们是否可以放心的直接调用DbUtil里的方法,而不需要做其他处理?

再比如DbUtil的这个方法:

PreparedStatement 是在方法内部定义的,没有办法在外部关闭吧?那么我使用这个方法的时候,如何关闭它。

谢谢。
2014-12-04 17:11#1
在WebBuilder中,使用DbUtil.query(request...,DbUtil.execute(request...,等方法,
注意带有request参数的所有数据库资源都会在request请求完成后自动释放。

关于DbUtil.getResultSet获取的结果集可以使用DbUtil.closeResultSet来关闭,因为通过resultSet对象可以找到statement和connection。
2014-12-04 20:12#2
谢谢陈老师的回复

DbUtil.closeResultSet里代码确实有写关闭statement,这里是我没有看清楚,抱歉。

“带有request参数的所有数据库资源都会在request请求完成之后自动释放 ”这里的自动释放是由连接池处理的么?还是代码里有处理,由于我没有找到这些代码,所以还是有些疑惑。水平有限,还请老师科普讲解一下(如果代码有写,指下类名,方法名称即可)。

谢谢。
2014-12-23 20:50#3
是在finally里面关闭的,parser.java文件
2014-12-25 23:44#4
谢谢三楼@wzysky
2014-12-30 16:53#5
连接自动关闭很不错
2015-02-11 14:40#6

如何我手工编写的代码,statement和resultset不关闭有什么影响吗?

2015-02-24 09:53#7
连接关闭时resultset有流对象不会自动释放
最好手动关闭resultset

返回开发者社区