使用 JDBC Ping MySQL Server
这似乎很简单(不适合我)...
如何使用 JDBC ping mysql 服务器?我已经成功地使用JDBC和MySQL选择和插入查询,但如何ping???
断续器
这似乎很简单(不适合我)...
如何使用 JDBC ping mysql 服务器?我已经成功地使用JDBC和MySQL选择和插入查询,但如何ping???
断续器
MySQL JDBC 驱动程序 (Connector/J) 提供了一种 ping 机制。
如果执行 SQL 查询,则前面附加了以下内容::/* ping */
"/* ping */ SELECT 1"
这实际上会导致驱动程序向服务器发送 ping 并返回一个虚假的轻量级结果集。
(您可以在 Connector/J 文档中找到它相当深的埋藏;在该页面上搜索“ping”。仔细阅读:此机制对所使用的语法非常敏感。与大多数SQL不同,“ping”标记的“解析”发生在客户端JDBC驱动程序本身中。
我不认为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); // open the connection with a 2 seconds timeout
如果 connect() 没有引发异常,则端口 3306 上运行某些内容。
如果你想确保它是该端口上的MySQL服务器,唯一的方法是建立一个JDBC连接(但你需要一个有效的用户名/密码)并运行一个语句,例如Brian提到的PING语句。