2013-12-16 1 views
0

У меня есть java-программа JDBC, которая открывает соединение с базой данных mysql и выполняет некоторые операции.Открытие соединений с двумя базами данных 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 строки, которые я хочу, чтобы открыть соединение.

+1

и на ваш вопрос? –

+0

Вы уже пытались использовать две переменные типа 'Connection'? – JCalcines

+0

@jigar joshi мой вопрос, как я могу это сделать ?? – joee

ответ

1

У вас нет ни одного con ссылки на два подключения к базе данных.
Вам определенно необходимо поддерживать две разные ссылки.

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

Нет альтернативы.


Update 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: Если вы хотите, чтобы генерировать как соединение при каждом вызове и вернуть их, то лучше использовать объект списка, чтобы вернуться ..

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, потому что Я не уверен, что каждый раз вам потребуются оба соединения. Иногда вы можете проверять некоторые данные только в одной базе данных.

+0

thankx, и мне нужно вернуть оба con1 и con2 в метод, который вызывает этот метод соединения? – joee

+0

@ Ravindra как использовать con1 и con2 для выполнения операций с обоими базами данных? – joee

+0

@joee Я предлагаю вам ознакомиться с [*** Учебным пособием Oracle JAVA JDBC ***] (http://docs.oracle.com/javase/tutorial/jdbc/overview/index.html), чтобы понять операции с базой данных с помощью java , –

Смежные вопросы