繁体   English   中英

用Java关闭数据库连接

[英]Closing a DB connection in Java

这只是Java程序员的愚蠢说法。 我有类似的东西

PreparedStatement stmt = DBConnection.getConnection()
                .prepareStatement(sql);

现在在finally块中,检查stmt是否存在,然后将其关闭。 在这种情况下, Connection对象将发生什么。 我知道如果我用单独的行写,那么我可以关闭它,因为我有对连接对象的引用,在这种情况下我没有。

在这种情况下, Connection对象将发生什么。

没有。 没有魔术,因此连接没有魔术关闭,只是因为您没有将其分配给变量。

这就是为什么对Connection使用单独的变量的原因:因此可以调用close() 或使用try-with-resources:

try (Connection connection = DBConnection.getConnection()) {
    PreparedStatement stmt = connection.prepareStatement(sql);
}

连接将保持打开状态,直到将来某个时候对其进行垃圾回收为止。

但是,对于连接池,可能不是您对连接的唯一引用(如果该池还维护对已借用连接的引用)。 在这种情况下,将不会进行垃圾收集,并且不会关闭垃圾收集。 它会从池中“泄漏”,最终可能会导致池用尽,并且不再有可用的连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM