我正在尝试确定通过JDBC ping数据库的最佳方法."最好"的意思是快速和低开销.例如,我考虑过执行此操作:
"SELECT 1 FROM DUAL"
Run Code Online (Sandbox Code Playgroud)
但我相信DUAL表是特定于Oracle的,我需要更通用的东西.
请注意,Connection有一个isClosed()方法,但javadoc声明这不能用于测试连接的有效性.
MySQL 有一个很好的机制,记录在这个SO 答案中。从答案来看:
Run Code Online (Sandbox Code Playgroud)"/* ping */ SELECT 1"这实际上会导致驱动程序向服务器发送 ping 并返回一个假的、轻量级的结果集。
话虽如此,@eckes 答案是最好的(使用 JDBC 4's Connection.isValid(int))。
是的,这只是Oracle,但在JDBC中没有通用的方法.
大多数连接池实现都有一个配置参数,您可以在其中指定将用于ping的SQL,从而推动责任制定如何对用户执行此操作.
这似乎是最好的方法,除非有人为此提出一个小帮助工具(当然,它排除了使用可能更快的非基于SQL的方法,如Oracle的内部ping函数)
| 归档时间: |
|
| 查看次数: |
18030 次 |
| 最近记录: |