如果关闭已关闭的连接会发生什么?

6

我在阅读我的数据库访问逻辑时发现,同一个连接可能连续关闭两次。

除了重复执行指令外,关闭已经关闭的连接是否值得关注?


不,如果驱动程序的供应商实现了这个方法,就没有任何问题。在使用数据库连接池的情况下,它应该什么都不做。 - Luiggi Mendoza
通常,如果已经关闭,则关闭方法应该正确处理它。但这实际上取决于您正在使用什么。尽管可能性极小,但某些实现可能会出现奇怪的行为。 - Laurentiu L.
2个回答

5
如果您正在使用java.sql.Connection,那么应该没有问题。
Connection文档中可以看到:
调用已经关闭的Connection对象上的close方法是无效操作。
也就是说,它什么也不做。
这适用于任何正确的实现。虽然某些实现在这方面可能会有奇怪的行为。

@LuiggiMendoza 确定的。我已经澄清了它。 - Laurentiu L.

1
从文档中得知:
立即释放此Connection对象的数据库和JDBC资源,而不是等待它们自动释放。在已关闭的Connection对象上调用close方法是无效的。强烈建议应用程序在调用close方法之前显式提交或回滚活动事务。如果调用了close方法并且存在活动事务,则结果是实现定义的。
简而言之,它应该什么也不做。但请注意,这个Connection接口的松散实现可能无法满足该接口契约中定义的规则。您没有说使用的是哪种数据库,因此我无法提供有关实现细节的进一步信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接