使用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目录中找到)):

  

validationQueryvalidation连接是否成功。

我不认为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连接(但你需要一个有效的用户名/密码)并运行一个语句,例如Br​​ian提到的PING语句。