0

データベースがダウンしているかどうかを確認する必要がある機能に取り組んでいます。Oracle データベースと sqlserver データベースの両方で機能する単一のクエリを使用する必要があります。データベースが稼働しているかどうかを確認する単一のクエリはありますか?

に似ているselect * from dual;

ありがとう!

4

4 に答える 4

0

Connectionの機能を使ってサーバーが利用可能かどうかを確認するのが最善だと思います。
接続に失敗すると例外が発生するはずです。状態をチェックして、まだ開いているかどうかを確認できます。

特定のニーズに対応するために、クエリを続行する場合。
これはベストプラクティス
ではありませんあなたが望むことを行う簡単な方法がわかりません。OracleとSQLはシステムオブジェクトの同じ名前を共有していません。ただし、そのコマンドを実行すると、SQLでは機能しませんが、例外は「サーバーがダウンしています」タイプではなく、try/catchで使用できます。
これはベストプラクティスではありません

それが理にかなっていることを願っています。

于 2012-05-02T10:43:36.270 に答える
0

私はconnection.setAutoCommit(true)selectではなくaを使います。

于 2012-05-02T10:39:46.927 に答える
0

java.sql.Connection にはメソッドがあります

isValid(timeOut)

接続が閉じられておらず、まだ有効な場合は true を返します。ドライバーは、接続に対してクエリを送信するか、このメソッドが呼び出されたときに接続がまだ有効であることを確実に検証する他のメカニズムを使用する必要があります。

于 2012-05-02T12:46:00.720 に答える
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 に答える