我正在开发一项功能,我需要检查数据库是否已关闭。我必须使用单一查询,它适用于oracle和sqlserver dbs。是否有任何单个查询检查db是否已启动?
类似于select * from dual;
谢谢!
答案 0 :(得分:0)
我选择connection.setAutoCommit(true)
,而不是选择。
答案 1 :(得分:0)
我认为最好使用Connection的功能来检查服务器是否可用 当连接失败时应该有一个Exception,你可以检查状态,看它是否仍然打开。
如果您决定继续查询,请满足您的特定需求
这不是最佳做法
我不知道一个简单的方法来做你想做的事情,Oracle和SQL不共享系统对象的相同命名。但是运行该命令,它将无法在SQL上运行,但异常将不是“服务器已关闭”类型,您可以在try / catch中使用它。
这不是最佳做法
希望它有意义。
答案 2 :(得分:0)
更好的方法是获取连接,然后使用产品版本或产品名称等数据库元数据信息来确保数据库已启动。
例如:
try{
Con = DriverManager.getConnection(databaseURL,username,password);
databasemetadata = con.getMetaData();
String databaseName = databasemetedata.getDatabaseProductName();
If(databaseName.equals("<desireddabase>"))
{
//database up and running
}
}
catch(Exception e)
{
// error in connection ...
}
答案 3 :(得分:0)
java.sql.Connection有一个方法
isValid(timeOut)
如果连接尚未关闭且仍然有效,则返回true。驱动程序应提交有关连接的查询,或者使用其他一些机制来确认在调用此方法时连接仍然有效。