【发布时间】:2021-08-07 21:29:36
【问题描述】:
在程序结束之前关闭所有语句和连接很重要。 我知道我可以在 try 子句中创建它们,这样我就可以让它们在块结束时自行关闭,但在某些情况下,最好让它们保持打开状态,我必须手动插入一个 void 来关闭它们。 那么,有没有一种简单的方法可以大规模关闭所有打开的preparedstatements、 statements 和连接? 我的意思是,不需要像这样记住所有这些?
pstmtC1.close();
pstmtC2.close();
Conn2.close();
pstmtB1.close();
ConnB1.close():
...
我正在寻找类似的东西
PreparedStatement.closeAllInstances();
Connection.closeAllInstances();
从现在开始,我发现的最好方法是将每个连接、preparedstatement 和语句添加到 AutoCloseable 列表(或集合或数组...)中,例如在初始化之后调用 toClose(第一条语句,以及它们的连接之后),例如这个:
List<AutoCloseable> toClose = new ArrayList<AutoCloseable>();
toClose.add(pstmtC1);
toClose.add(pstmtC2);
toClose.add(connC1);
...
(我习惯使用列表,因为顺序被保留)然后...
for (AutoCloseable c:toClose) if (c != null) {
try {
c.close();
} catch (Exception e) {}
}
有更好的主意吗?
【问题讨论】:
标签: java sql connection prepared-statement