0

我正在开发一个需要检查数据库是否关闭的功能。我必须使用适用于 oracle 和 sqlserver dbs 的单个查询。是否有任何单个查询可以检查 db 是否已启动?

如同select * from dual;

谢谢!

4

4 回答 4

0

我会connection.setAutoCommit(true)选择而不是选择。

于 2012-05-02T10:39:46.927 回答
0

我认为最好使用 Connection 的功能来检查服务器是否可用。
连接失败时应该有一个异常,您可以检查状态以查看它是否仍然打开。

为了满足您的特定需求,如果您决定继续查询。
这不是最佳实践
我不知道有一种简单的方法来做你想做的事,Oracle 和 SQL 不共享系统对象的相同命名。但运行该命令,它不适用于 SQL,但异常不会是“服务器已关闭”类型,您可以在 try/catch 中使用它。
这不是最佳做法

希望这是有道理的。

于 2012-05-02T10:43:36.270 回答
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 ... 
}
于 2012-05-02T11:08:43.407 回答
0

java.sql.Connection 有一个方法

isValid(timeOut)

如果连接尚未关闭并且仍然有效,则返回 true。当调用此方法时,驱动程序应提交有关连接的查询或使用某些其他机制来肯定地验证连接仍然有效。

于 2012-05-02T12:46:00.720 回答