2012-02-15 36 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分贝,不要忘记回来计算器和奖励都好答案:)
相关问题