如何通过java程序访问另一个系统mysql数据库?

如何通过java程序访问另一个系统mysql数据库?,java,mysql,odbc,Java,Mysql,Odbc,如何通过java程序访问另一个系统的mysql数据库?我正在使用以下程序,但是我得到了通信错误?连接另一个系统的mysql数据库需要做哪些更改 Public void dbconnection() { String name = ""; String port = "3306"; String user = "system"; String pass = "system";

如何通过java程序访问另一个系统的mysql数据库?我正在使用以下程序,但是我得到了通信错误?连接另一个系统的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);
            }
        }

您没有创建驱动程序类的实例:

Class.forName("com.mysql.jdbc.Driver").newInstance();
[更新:毕竟没有必要,忽略此项]

您还引用了“sun.jdbc.odbc.JdbcOdbcDriver”,这有必要吗?如果是这样的话,你不也应该实例化它吗?[更新:可能不会]

如果它与localhost一起工作,而不是与指定的IP一起工作,则需要将mysql配置为在所有端口上侦听

jcomeau@intrepid:/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

据我所知,您只需使用另一台主机和其他凭据指定另一个连接字符串,例如:

        ...
        String port = "3306";
        String user = "user_name";
        String pass = "password";
        String dbname = "db_name";
        String host="host_name";
        ...
要连接到远程mysql数据库服务器,您需要做3件简单的事情(第4步可选)

  • 打开任何用于mysql数据库管理的GUI工具(IDE、mysql Workbench或smth),通过指定凭据、主机、端口和数据库名称检查是否可以连接到数据库。 如果成功,您知道db部分没有任何错误(转到第3点),如果没有错误,并且您确信您在这一点上正确地执行了所有操作,请转到第2点
  • 请在上查看此帖子并重试(转到pkt 1)

  • 您需要清理一下您的代码,了解如何在java上连接和执行简单sql语句的简单且切中要害的教程

  • 一旦一切正常,记得在Vogella教程中给出+1,赞扬cybercity或任何其他网站关于如何在db上启用远程访问的解释,不要忘记返回stackoverflow并奖励所有好答案:)

  • @AnilKumarReddy现在我没有收到任何错误消息,但我提供的连接字符串未连接。是否检查您的计算机与MySQL数据库计算机之间的连接?您是否能够使用相同的凭据从您的计算机通过Mysql客户端进行连接?如果我在该主机上使用localhost,我将访问我的数据库为什么需要另一个连接字符串?如果您希望连接到另一个Mysql服务器或使用不同的选项(例如,数据库名称、用户、密码、端口等),然后您需要在连接字符串中指定它,仍然无法访问数据库。您可以使用相同的凭据使用mysql命令行客户端连接到数据库吗?如果我使用上述程序,该程序将访问我的数据库值,它不会访问另一个系统数据库您需要将另一个系统的IP或主机名放在其中,您需要将另一个系统的my.cnf设置为侦听我之前指定的所有接口