我(使用以下方法)成功连接到数据库:
java.sql.Connection connect = DriverManager.getConnection(
"jdbc:mysql://localhost/some_database?user=some_user&password=some_password");
Run Code Online (Sandbox Code Playgroud)
一段时间后我应该检查连接是否仍然打开和关闭?
我希望有一些类似connect.isConnected();
我可以使用的东西.
hom*_*ome 46
您最好的机会是对一个表执行简单查询,例如:
select 1 from SOME_TABLE;
Run Code Online (Sandbox Code Playgroud)
哦,我刚看到自1.6以来有一种新的方法:
java.sql.Connection.isValid(int timeoutSeconds)
:
如果连接尚未关闭且仍然有效,则返回true.驱动程序应提交有关连接的查询或使用其他一些机制,以便在调用此方法时肯定地验证连接是否仍然有效.驱动程序提交的用于验证连接的查询应在当前事务的上下文中执行.
dty*_*dty 25
没有.只需执行您的查询.如果连接已经死亡,您的JDBC驱动程序将重新连接(如果它支持它,并且您在连接字符串中启用它 - 大多数不支持它),否则您将获得异常.
如果检查连接是否已启动,则在实际执行查询之前可能会出现问题,因此通过检查您无需获得任何结果.
也就是说,许多连接池通过执行类似于SELECT 1
将连接交付之前的操作来验证连接.但这仅仅是执行查询,因此您也可以执行业务查询.
Buh*_*ndi 16
使用Connection.isClosed()
功能.
该JavaDoc的状态:
检索此
Connection
对象是否已关闭.如果已在其上调用方法close或者发生了某些致命错误,则会关闭连接.true
只有在调用Connection.close方法后调用此方法时,才能保证此方法返回.
小智 9
你也可以使用
public boolean isDbConnected(con Connection) {
//final String CHECK_SQL_QUERY = "SELECT 1";
try {
if(!con.isClosed() || con!=null){
return true;
}
} catch (SQLException e) {
return false;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
94821 次 |
最近记录: |