我正在尝试确定通过 JDBC ping 数据库的最佳方式。 “最好”是指快速和低开销。例如,我考虑过执行这个:
"SELECT 1 FROM DUAL"
但我相信 DUAL 表是特定于 Oracle 的,我需要更通用的东西。
请注意 Connection
有一个 isClosed()
方法,但 javadoc 指出这不能用于测试连接的有效性。
最佳答案
在 JDBC 4 中,您可以使用连接接口(interface)中的 isValid(int)
( JavaDoc )。这基本上为您完成了试用声明。
有些驱动程序通过向数据库发送正确的虚拟 SQL 来实现这一点,有些驱动程序直接使用低级操作来减少解析开销。
但是要注意超时,一些驱动程序(DB/400 和 Oracle Thin)确实会为每次调用生成一个新的时间线程,这对于大多数池验证场景来说是 Not Acceptable )。而且 Oracle 似乎也没有使用准备好的语句,所以它有点依赖隐式缓存。
关于java - 通过 JDBC 到 'ping' 数据库的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/847246/