簡體   English   中英

同時打開到兩個mysql數據庫的連接

[英]Opening connections to the two mysql databases at the same time

我有一個Java JDBC程序,該程序打開與mysql數據庫的連接並進行一些操作。

我想連接到兩個數據庫,一個在本地計算機上,另一個在遠程計算機上。

我可以一次連接一個,但是我想一次打開兩個連接。

這是我的java程序:

public class DatabaseOperations {

    Connection con = null;
    String driver = "com.mysql.jdbc.Driver";
    String user = "root";
    String password = "root";
    //tring url = "jdbc:mysql://192.168.2.26:3306/time_entries_test";
    String dbName = "time_entries_test";
    String connect1 = "jdbc:mysql://192.168.2.26:3306/" + dbName + "?user=" + user + "&password=" + password + "&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10";
    String connect2 = "jdbc:mysql://localhost:3306/" + dbName + "?user=" + user + "&password=" + password + "&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10";

    public Connection createConnection() {
        try {
            Class.forName(driver);
            //con = DriverManager.getConnection(connect2);
            con = DriverManager.getConnection(connect2);
        } catch (ClassNotFoundException cnfe) {
            cnfe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        }
        return con;
    }
}

這里的connect1和connect2是我要打開連接的兩個URL字符串。

你不能有一個con參考兩個數據庫連接。
您肯定需要維護兩個不同的引用。

Connection con1 = DriverManger.getConnection( connect1 );  
Connection con2 = DriverManger.getConnection( connect2 );  

別無選擇。


更新1

我如何同時返回con1和con2,以便可以在我的方法中同時使用它們進行操作?

解決方案1 :創建返回本地和遠程連接的多個方法。

public Connection getLocalConnection() {
  ...
  Connection localCon = DriverManger.getConnection( connect1 );  
  ...
  return localCon;
}

public Connection getRemoteConnection() {
  ...
  Connection remoteCon = DriverManger.getConnection( connect2 );  
  ...
  return remoteCon;
}

解決方案2 :如果要在每次調用時都生成兩個連接並返回它們,則最好使用list對象返回。

public List<Connection> createConnection() {
  ...
  Connection localCon = DriverManger.getConnection( connect1 );  
  Connection remoteCon = DriverManger.getConnection( connect2 );  
  ...
  List<Connection> connectionsList = new ArrayList<Connection>( 2 );
  connectionsList.add( localCon );
  connectionsList.add( remoteCon );
  ...
  return connectionsList;
}

我更喜歡使用Solution 1 ,因為我不確定每次您都需要兩個連接。 有時您可能只在一個數據庫中檢查某些數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM