通过JDBC“ ping”数据库的最佳方法是什么?


问题内容

我正在尝试确定通过JDBC ping数据库的最佳方法。“最好”是指快速且低开销。例如,我考虑过执行以下命令:

"SELECT 1 FROM DUAL"

但是我相信DUAL表是特定于Oracle的,并且我需要一些更通用的东西。

请注意,它Connection具有一个isClosed()方法,但是javadoc指出该方法不能用于测试连接的有效性。


问题答案:

是的,那只能是Oracle,但是在JDBC中没有通用的方法可以做到这一点。

大多数连接池实现都有一个配置参数,您可以在其中指定将用于ping的SQL,从而推动责任确定如何对用户执行此操作。

除非有人为此提供了一个小帮手工具,否则这似乎是最好的方法(当然,它排除了可能使用甚至更快的非基于SQL的方法(例如Oracle的内部ping函数)的可能性)