我是一名java初學者,我正在研究一個使用JDBC連接到遠程mysql數據庫的簡單應用程序。我已經在本地測試過它,它工作得很好,但是我無法讓它在我的遠程服務器上工作。 我不認爲它沒什麼用,但繼承人的代碼:使用JDBC連接到mysql遠程數據庫?
Connection connection = null;
String dburl = "jdbc:mysql://314159265:3306/Db_Name";
String userName = "user";
String passWord = "password";
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(dburl, userName, passWord);
Statement st = connection.createStatement();
String query = "INSERT INTO Example (`TestColumn`) VALUES('hello')";
int rsI = st.executeUpdate(query);
System.out.println("Hi");
}catch (Exception e) {
System.out.println(e);
} finally {
if (connection != null) {
try {
connection.close();
System.out.println("Database connection terminated");
} catch (Exception e) { /* ignore close errors */ }
}
}
當我運行它,我得到以下信息:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago.The driver has not received any packets from the server.
我敢肯定那一定是某種的服務器配置問題。
Notes:
Username, password, IP, database name, etc. are just examples.
就在這裏猜測,但是你的主人真的是314159265?這應該是某種IP還是真的是DNS名稱? – btiernay
在訪問驅動程序之前,您是否必須設置某種ssh/ssl隧道到遠程服務器?另外 - 您可以使用客戶端系統上的遠程查詢瀏覽器訪問數據庫嗎?從內存中,我認爲你必須配置它以便暴露數據庫,默認情況下,我非常確定數據庫只在本地主機上可用,所以當你連接到JDBC時,你將被拒絕。我敢打賭你的java代碼和數據庫在同一臺服務器上工作 – FaddishWorm
你能從你的機器(你運行該程序的地方)到達那臺機器'31415 ...'嗎?嘗試ping那個「地址」或telnet到端口3306 – kolossus