Java JDBC 连接状态

2022-08-31 23:50:02

我使用以下方法(成功)连接到数据库:

java.sql.Connection connect = DriverManager.getConnection(
  "jdbc:mysql://localhost/some_database?user=some_user&password=some_password");

我应该检查什么,看看连接是否仍然打开并在一段时间后启动?
我希望有类似的东西可供我使用。connect.isConnected();


答案 1

您最好的机会是对一个表执行简单的查询,例如:

select 1 from SOME_TABLE;

哦,我刚刚看到自1.6以来有一种新方法可用:

java.sql.Connection.isValid(int timeoutSeconds)

如果连接尚未关闭且仍然有效,则返回 true。驱动程序应提交对连接的查询,或使用某些其他机制来积极验证调用此方法时连接是否仍然有效。驱动程序为验证连接而提交的查询应在当前事务的上下文中执行。


答案 2

无。只需执行查询即可。如果连接已终止,则 JDBC 驱动程序将重新连接(如果它支持它,并且您在连接字符串中启用了它 - 大多数不支持它),否则您将收到异常。

如果检查连接是否已启动,则在实际执行查询之前,它可能会发生故障,因此通过检查绝对不会获得任何好处。

也就是说,许多连接池通过在分发连接之前执行类似操作来验证连接。但这只不过是执行查询,因此您也可以执行业务查询。SELECT 1


推荐