使用JDBC Ping MySQL服务器
这看起来很简单(不适合我)……
如何使用JDBC ping一个mysql服务器? 我已成功使用JDBC和MySQL的select和insert查询,但如何ping?
TIA
MySQL JDBC驱动程序(Connector / J)提供了ping机制。
如果您使用/* ping */
进行SQL查询,例如:
"/* ping */ SELECT 1"
这实际上会导致驱动程序向服务器发送ping并返回假的,轻量级的结果集。
(您可以在Connector / J文档中找到相当深入的内容 ;在该页面上搜索“ping”。仔细阅读:此机制对所使用的语法非常敏感 。与大多数SQL不同,“解析”“ping” “标记发生在客户端JDBC驱动程序本身。)。
我不知道如何在JDBC中执行此操作,您可以使用连接池来validation连接(这是Tomcat的context.xml
(可在应用程序的META-INF
目录中找到)):
validationQuery
validation连接是否成功。
我不认为JDBC APi中有任何内容。
但是你可以简单地使用InetAddress和isReachable()方法来检查服务器是否存在(这实际上是ping正在做什么)。
http://download.oracle.com/javase/6/docs/api/java/net/InetAddress.html#isReachable%28int%29
编辑 :
如果要检查MySQL是否正在运行而不是ping服务器,可以尝试在MySQL默认端口上打开服务器的套接字。
像这样的东西:
InetAddress addr = InetAddress.getByName(“your.server.com”); int port = 3306; SocketAddress sockaddr = new InetSocketAddress(addr,port); Socket sock = new Socket(); sock.connect(sockaddr,2000); //以2秒超时打开连接
如果connect()没有抛出exception,则在端口3306上运行某些exception。
如果你想确保它是该端口上的MySQL服务器,唯一的方法是建立一个JDBC连接(但你需要一个有效的用户名/密码)并运行一个语句,例如Brian提到的PING语句。