微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java大量关闭连接和语句

如何解决java大量关闭连接和语句

在程序结束之前关闭所有语句和连接很重要。 我知道我可以在 try 子句中创建它们,这样我就可以让它们在块结束时自行关闭,但在某些情况下,最好让它们保持打开状态,我必须手动插入一个 void 来关闭它们。 那么,有没有一种简单的方法可以大量关闭所有打开的预准备语句、语句和连接? 我的意思是,不需要像这样记住所有这些?

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);
...

(我使用 list 因为顺序被保留)然后...

for (AutoCloseable c:toClose) if (c != null) {
        try {
            c.close();
        } catch (Exception e) {}
}

有什么更好的主意吗?

解决方法

由于它们实现了 AutoCloseable 因此 java.io.Closeable,您可以简单地使用 try-with-resources 语句,这将确保每个资源在语句结束时关闭,

查看https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html了解更多信息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。