使用c3p0记录未闭合的PreparedStatement

时间:2015-07-07 08:32:35

标签: java c3p0

使用c3p0我可以通过设置属性Connection来记录未关闭的debugUnreturnedConnectionStackTraces unreturnedConnectionTimeout。我想知道是否有任何方法可以找到未关闭的PreparedStatement,因为今天我找到了如下代码:

...
ps=dbConnection.prepareStatement(qry);
rs=ps.executeQuery();   
if(!rsCandItem.next())//to check Result Set has rows
{
rs.close();
qry = "SELECT * FROM TABLE1";
ps=dbConnection.prepareStatement(qry); //same PreparedStatement object is used without closing previous instance
rs=ps.executeQuery();
}
...

我想使用相同的PreparedStatement对象(ps)而不关闭它是错误/不好的做法,如果我错了,请纠正我。所以我想使用c3p0(或通过任何其他方式)unclosed PreparedStatement进行记录。有什么办法吗?

1 个答案:

答案 0 :(得分:0)

除非驱动程序损坏,否则关闭Connection也应关闭相关语句ResultSets。正如你所说,即使在特殊情况下它们可能不会引起问题,也不要关闭它们是不好的做法。

由于连接池处理Connections(并且它们是泄漏资源的那些),因此不太可能存在用于观察其他任何内容的设置。