使用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
进行记录。有什么办法吗?
答案 0 :(得分:0)
除非驱动程序损坏,否则关闭Connection
也应关闭相关语句ResultSets
。正如你所说,即使在特殊情况下它们可能不会引起问题,也不要关闭它们是不好的做法。
由于连接池处理Connections
(并且它们是将泄漏资源的那些),因此不太可能存在用于观察其他任何内容的设置。