我正在研究一个功能,我需要检查数据库是否关闭。我必须使用适用于oracle和sqlserver dbs的单一查询。是否有任何单个查询检查数据库是否启动?Oracle和SQL Server数据库的通用查询?
类似于select * from dual;
谢谢!
我正在研究一个功能,我需要检查数据库是否关闭。我必须使用适用于oracle和sqlserver dbs的单一查询。是否有任何单个查询检查数据库是否启动?Oracle和SQL Server数据库的通用查询?
类似于select * from dual;
谢谢!
我会去用connection.setAutoCommit(true)
,而不是一个选择。
我认为这将是最好使用连接的功能来检查服务器是否可用。
当连接失败,你可以检查状态,看它是否仍然开放应该有一个例外。
为了满足您的特定需求,如果你决定继续进行查询。
这不是最佳实践
我不知道一个简单的方法来做你想做的事情,Oracle和SQL不会共享系统对象的相同命名。但运行该命令,它不会在SQL上工作,但该异常不会是“服务器已关闭”类型,您可以在try/catch中使用它。
这并不是一个好的方案
希望这是有道理的。
更好的办法是获得连接,然后使用类似的产品版本或产品名称数据库的元数据信息,以确保数据库已启动或没有。
如:
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 ...
}
的java.sql.Connection中有一个方法
isValid(timeOut)
返回true如果连接尚未关闭并且仍然有效。驱动程序应该提交一个关于连接的查询或者使用一些其他的机制,当这个方法被调用时肯定地验证连接仍然有效。
名为双创建一个表。这是解决方法。 –
如果数据库在检查后立即停止,会发生什么情况?您是否考虑过只是在运行您的查询并捕获抛出的异常? – Pondlife