2012-02-15 71 views
-1

如何通過java程序訪問另一個系統的mysql數據庫?使用下面的程序但是我得到了通信錯誤?有什麼變化需要連接另一個系統的mysql數據庫?如何通過java程序訪問另一個系統的mysql數據庫?

Public void dbconnection() { 

      String name = ""; 
      String port = "3306"; 
      String user = "system"; 
      String pass = "system"; 
      String dbname = "cascade_demo"; 
      String host="192.168.1.61"; 

      try { 

       Class.forName("com.mysql.jdbc.Driver"); 

        String url = "jdbc:mysql://"+host+":"+ port + "/" + dbname; 
       System.out.println("URL:" + url); 
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
       Connection con = DriverManager.getConnection(url, user, pass); 
       String qry2 = "select * from item_master"; 
       Statement st = con.createStatement(); 
       ResultSet rs = st.executeQuery(qry2); 
       while (rs.next()) { 

        name = rs.getString(1); 
        System.out.println("Name:" + name); 

       } 


       rs.close(); 
       st.close(); 
       con.close(); 


      } catch (Exception e) { 
       System.out.println("Exception:" + e); 
      } 
     } 
+0

請粘貼錯誤 – 2012-02-15 07:13:00

+0

@AnilKumarReddy現在我沒有得到任何錯誤消息,但連接字符串我已經給未連接 – javalearner 2012-02-15 07:23:30

+0

你檢查過你的機器和MySQL數據庫機器之間的連接嗎?你能夠通過你的機器上的Mysql客戶端使用相同的憑證進行連接嗎? – Rocky 2012-02-15 07:38:34

回答

0

你沒有創建驅動程序類的一個實例:

Class.forName("com.mysql.jdbc.Driver").newInstance(); 

[更新:畢竟不是必要的,忽略]

而你還引用「的太陽。 jdbc.odbc.JdbcOdbcDriver「,是否有必要?如果是這樣,你不應該實例化它嗎? [更新:可能不是]

如果它適用於本地主機,而不是指定的IP,則需要配置mysql以偵聽所有端口。

[email protected]:/tmp$ cat dbconnection.java; javac dbconnection.java; sudo java -cp .:/usr/share/maven-repo/mysql/mysql-connector-java/5.1.16/mysql-connector-java-5.1.16.jar dbconnection 
import java.sql.*; 
public class dbconnection { 
public static void main(String args[]) { 
    String name = ""; 
    String port = "3306"; 
    String user = "root"; 
    String pass = ""; 
    String dbname = "imagetagging"; 
    String host="127.0.0.1"; 
    try { 
    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    String url = "jdbc:mysql://"+host+":"+ port + "/" + dbname; 
    System.out.println("URL:" + url); 
    //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    Connection con = DriverManager.getConnection(url, user, pass); 
    String qry2 = "select * from taggers"; 
    Statement st = con.createStatement(); 
    ResultSet rs = st.executeQuery(qry2); 
    while (rs.next()) { 
    name = rs.getString(1); 
    System.out.println("Name:" + name); 
    } 
    rs.close(); 
    st.close(); 
    con.close(); 
    } catch (Exception e) { 
    System.out.println("Exception:" + e); 
    } 
} 
} 
URL:jdbc:mysql://127.0.0.1:3306/imagetagging 
Name:1 
Name:2 
Name:3 
Name:4 
Name:5 
Name:6 
Name:7 
Name:8 
Name:9 
Name:10 
Name:11 
Name:12 
Name:13 
Name:14 
Name:15 
Name:16 
Name:17 
Name:18 
Name:19 
Name:20 
Name:21 
+0

如果我給這個Class.forName(「com.mysql.jdbc.Driver」)。newInstance(); ,仍然沒有訪問數據庫。 – javalearner 2012-02-15 07:28:14

+0

你可以用mysql命令行客戶端連接到數據庫,使用相同的憑據嗎? – 2012-02-15 07:29:55

+0

嗯,它的工作沒有newInstance()也......我的壞。 – 2012-02-15 07:52:45

0

據我瞭解,你只需要指定另一個連接字符串,與另一臺主機和其他憑證,如:

 ... 
     String port = "3306"; 
     String user = "user_name"; 
     String pass = "password"; 
     String dbname = "db_name"; 
     String host="host_name"; 
     ... 
+0

爲什麼我需要另一個連接字符串? – javalearner 2012-02-15 07:27:12

+0

如果要連接到另一臺MySQL服務器或使用不同的選項(例如數據庫名稱,用戶,密碼,端口等),則需要在連接字符串中指定此選項。 – Devart 2012-02-15 07:41:13

0

你必須做3(與第4步可選)簡單的事情連接到你的遠程mysql數據庫服務器。

  1. 開拓mysql數據庫管理的任何GUI工具(你的IDE,MySQL工作臺或其他水木清華),檢查是否可以通過指定您的憑據,主機,端口和數據庫名稱連接到數據庫。 如果成功,你知道沒有錯誤的數據庫部分(去3),如果沒有,並且你確定你做的一切正確到這一點去點2.
  2. 看看這個職位how to enable remote access to your db然後重試(去PKT 1)

  3. 你將不得不收拾了一下你的代碼,看看成簡單的和對點教程如何連接並執行與Java簡單的SQL語句Vogella tutorial

  4. 一旦一切工作正常,請記得在Vogella教程上給予+1,讚揚cybercity或任何其他網站的解釋如何啓用y上的遠程訪問OU分貝,不要忘記回來計算器和獎勵都好答案:)
相關問題