java - 通过 JDBC 到 'ping' 数据库的最佳方法是什么?

标签 java jdbc

我正在尝试确定通过 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/

相关文章:

java - JLabel 设置为文本列表项

javascript - 每 X 秒使用 mysql 数据更新 google java map

java - 我可以从内部类中的方法引用一个类吗?如果可以,如何引用?

java - 加载 jdbc :odbc driver? 时,Class 类中的 forName() 方法做了什么

java - 谁能找出我在这份准备好的声明中做错了什么?

java - JDBC 中的 PreparedStatement

java - 使用 java 创建我们自己的 A2DP 配置文件

java - 我无法让 PyDev - PYTHONPATH 识别 Eclipse 中的 Java src 目录

java - SQL 条件原子插入

java - 如何在MySQL中将变量插入表中