java - JDBC同时连接MySQL和Sybase数据库

标签 java mysql jdbc sybase

我正在尝试从 SYBASE 数据库中检索数据并将检索到的数据复制到 MySQL 的表中。我能够分别(即)使用 SYBASE 的 jTDS 驱动程序和 MySQL 的 Jdbc_driver 连接两个数据库。

现在我想在一个程序中同时连接两个数据库。但是我搞不清楚 Class.forName() 应该写什么。

我对 MySQL 使用了 Class.forName(JDBC_DRIVER);,对 SYBASE 使用了 Class.forName("net.sourceforge.jtds.jdbc.Driver");

Sybase:

public static void main(String[] args) {

    String a;
    String b;
    String c;

    try {  
        Class.forName("net.sourceforge.jtds.jdbc.Driver");  
        Connection con = DriverManager.getConnection(  
                "jdbc:jtds:sybase://10.159.252.29:4100/fmdb","sa","Changeme_123");  

        Statement stmt = con.createStatement();  
        ResultSet rs = stmt.executeQuery("selecttbl_alm_log_2000000000.Csn,"
                + "tbl_alm_log_2000000000.IsCleared,"
                + "tbl_alm_log_2000000000.Id"
                + "From fmdb.dbo.tbl_alm_log_2000000000"
                + "Where IsCleared = 0"); 

        while(rs.next()) {
            a = rs.getString(1);
            b = rs.getString(2);
            c = rs.getString(3);

            System.out.println(a+"  "+b+"  "+c);
        }

        con.close();  
    } catch(Exception e) {
        System.out.println(e);
    }  
}

MySQL:

try {
    Class.forName(JDBC_DRIVER);
    System.out.println("connecting to database");

    conn = DriverManager.getConnection(DB_URL, USER, PASS);
    System.out.println("connected to database successfully");

    System.out.println("creating table in given database");

    // stmt = conn.createStatement();
    String sql = "CREATE TABLE newtable "
            + "(id INTEGER not NULL, "
            + "first VARCHAR(255), "
            + "PRIMARY KEY ( id ))";

    stmt = conn.prepareStatement(sql);
    stmt.executeUpdate(sql);

    System.out.println("created table in database");
}

这些只是片段。我只是想合并上面的代码。 帮助我判断这是否可行并分享一些对此的见解。

最佳答案

单个程序中的多个连接,可以这样创建

public static void main(String[] args) {

  try{  
      Class.forName("net.sourceforge.jtds.jdbc.Driver");  
      Connection con1 = DriverManager.getConnection("jdbc:jtds:sybase://10.159.252.29:4100/fmdb","sa","Changeme_123");

      Class.forName(JDBC_DRIVER);
      Connection con2 = DriverManager.getConnection(DB_URL, USER, PASS);

      ///After getting both connections, write your code

      String a;
      String b;
      String c;

      Statement stmt= con1.createStatement();  
      ResultSet rs=stmt.executeQuery("select tbl_alm_log_2000000000.Csn, tbl_alm_log_2000000000.IsCleared, tbl_alm_log_2000000000.Id From fmdb.dbo.tbl_alm_log_2000000000 Where IsCleared = 0");  
      while(rs.next()) ///If your query result is single row, use if instead of while 
          {
          a = rs.getString(1);
          b = rs.getString(2);
          c = rs.getString(3);

          System.out.println(a+"  "+b+"  "+c);
          }

      String sql = "CREATE TABLE newtable " + "(id INTEGER not NULL, " + "first VARCHAR(255), " + "PRIMARY KEY ( id ))";
      stmt = con2.prepareStatement(sql);
      stmt.executeUpdate(sql);

      con1.close();
      con2.close();
      }catch(Exception e){ System.out.println(e);}  
   }    

} 

关于java - JDBC同时连接MySQL和Sybase数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39998451/

相关文章:

java - 如何防止可运行 JAR 中出现 "No jhdf5 in java.library.path"错误

mysql - 如何更改 select 语句中的列值

mysql查询不返回结果

jdbc - Hive JDBC 客户端抛出 SQLException

java - 如何使用 JDBC 将 Java 应用程序连接到 db4free.net?

java - 构造函数中的 JDBC 连接

java - 创建和访问 Vector 类

Java Applet 输出文件

Java 域类填充数据

mysql - 返回与 MySQL 中另一个表无关的条目的最有效方法?