使用 JDBC Ping MySQL Server

2022-09-02 23:57:21

这似乎很简单(不适合我)...

如何使用 JDBC ping mysql 服务器?我已经成功地使用JDBC和MySQL选择和插入查询,但如何ping???

断续器


答案 1

MySQL JDBC 驱动程序 (Connector/J) 提供了一种 ping 机制。

如果执行 SQL 查询,则前面附加了以下内容::/* ping */

"/* ping */ SELECT 1"

这实际上会导致驱动程序向服务器发送 ping 并返回一个虚假的轻量级结果集。

(您可以在 Connector/J 文档中找到它相当深的埋藏;在该页面上搜索“ping”。仔细阅读:此机制对所使用的语法非常敏感。与大多数SQL不同,“ping”标记的“解析”发生在客户端JDBC驱动程序本身中。


答案 2

我不认为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语句。


推荐