Java JDBC 连接状态
我使用以下方法(成功)连接到数据库:
java.sql.Connection connect = DriverManager.getConnection(
"jdbc:mysql://localhost/some_database?user=some_user&password=some_password");
我应该检查什么,看看连接是否仍然打开并在一段时间后启动?
我希望有类似的东西可供我使用。connect.isConnected();
我使用以下方法(成功)连接到数据库:
java.sql.Connection connect = DriverManager.getConnection(
"jdbc:mysql://localhost/some_database?user=some_user&password=some_password");
我应该检查什么,看看连接是否仍然打开并在一段时间后启动?
我希望有类似的东西可供我使用。connect.isConnected();
您最好的机会是对一个表执行简单的查询,例如:
select 1 from SOME_TABLE;
哦,我刚刚看到自1.6以来有一种新方法可用:
java.sql.Connection.isValid(int timeoutSeconds)
:
如果连接尚未关闭且仍然有效,则返回 true。驱动程序应提交对连接的查询,或使用某些其他机制来积极验证调用此方法时连接是否仍然有效。驱动程序为验证连接而提交的查询应在当前事务的上下文中执行。
无。只需执行查询即可。如果连接已终止,则 JDBC 驱动程序将重新连接(如果它支持它,并且您在连接字符串中启用了它 - 大多数不支持它),否则您将收到异常。
如果检查连接是否已启动,则在实际执行查询之前,它可能会发生故障,因此通过检查绝对不会获得任何好处。
也就是说,许多连接池通过在分发连接之前执行类似操作来验证连接。但这只不过是执行查询,因此您也可以执行业务查询。SELECT 1