這似乎相當簡單(不適合我)...使用JDBC Ping MySQL服務器
如何使用JDBC ping一個mysql服務器?我已經成功地使用JDBC和MySQL的select和insert查詢,但是如何ping?
TIA
這似乎相當簡單(不適合我)...使用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 documentation相當深;搜索「平」該網頁上仔細閱讀:。這種機制是非常敏感所使用的語法與大多數SQL中,「解析」的「ping」標記發生在客戶端JDBC驅動程序本身中。)。
+1。與簡單的「SELECT 1」相比,很容易知道是什麼使得這個「輕量級」。我無法找到該頁面上的任何文件,證明ping的「更輕」 – 2011-03-27 07:42:05
非常感謝...我只是想知道,你不必輸入用戶名和該用戶的密碼才能ping?我應該早些時候陳述此...對不起... 我想ping沒有用戶名和密碼...基本上檢查是否存在mysql,並設置導致mysql服務器...即:端口3306和主機(即時只使用127.0.0.1)...在此先感謝G6 – 2011-04-03 16:31:19
是的。由於您使用的是數據庫的功能,因此您需要一個連接,該連接需要登錄。 – 2011-04-03 16:34:13
我不認爲在這個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聲明。
這不會檢查主機上的數據庫存在。 – 2011-03-26 23:23:44
@Piotr Findeisen:你說你想ping服務器,所以我假設你想確保服務器本身是可達的。 – 2011-03-27 07:33:51
我不知道提問者想要什麼:) – 2011-03-27 22:47:05
我不知道如何做到這一點的JDBC通過您可以使用連接池,以驗證您的網絡連接,像這樣(這是context.xml
爲Tomcat(在META-INF
目錄應用程序的發現)):
<Resource name="jdbc/My_DS" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="USERNAME" password="PASSWORD" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/MYDB?autoReconnect=true"
removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
testOnBorrow="true" validationQuery="SELECT 1" />
validationQuery
驗證連接是否成功。
也許validationQuery =「/ * ping */SELECT 1」會更好嗎? – Suma 2013-07-12 07:22:41
如果你不知道該怎麼做,那你覺得這很簡單嗎? – Bombe 2011-03-26 23:13:17