2011-10-25 12 views
5

Tengo dos bases de datos locales que estoy tratando de conectar utilizando la clase de conexión de Java. Es bastante fácil conectarse a la primera base de datos usando:Referencia dos bases de datos con conexión en java

public Connection conn; 
conn = DriverManager.getConnection(connectionString); 

¿Cómo puedo agregar una segunda base de datos a esa misma conexión? Ambos están en el mismo servidor, por lo que debería ser bastante simple, pero no puedo encontrar los comandos adecuados para hacerlo.

Gracias

+0

¿por qué quiere conectar dos bases de datos desde la misma conexión? ¿para replicar? –

+0

Para que pueda ejecutar transacciones que consulten ambas bases de datos –

+0

indique si tiene tabla1 en db1 y tabla2 en db2, entonces ¿necesita ejecutar consultas uniendo table1 y table2? –

Respuesta

9

A Connection es una sesión con una base de datos específica. No puede usar una conexión para comunicarse con dos bases de datos diferentes; para eso, necesitas dos Conexiones separadas.

Connection conn1 = DriverManager.getConnection(connectionString1); 
Connection conn2 = DriverManager.getConnection(connectionString2); 
+0

Esa es la solución que estaba usando, pero esperaba que hubiera una mejor manera de hacerlo. –

2

¿Usted ha intentado:

public Connection conn1; 
conn1 = DriverManager.getConnection(connectionString1); 
public Connection conn2; 
conn2 = DriverManager.getConnection(connectionString2); 
+0

Eso fue todo el trabajo, esperaba algo mejor –

1
  1. miembros de instancia no deben ser públicos.

  2. La conexión debe ser una variable local, no un miembro de instancia.

Solo se puede conectar a una base de datos a la vez con una sola conexión. Ergo necesita otra Conexión.

+0

Gracias, pero ya estaba siguiendo 1 y 2 en mi código, simplemente lo simplifiqué para el ejemplo aquí. –

+0

@Zain No veo cómo eso simplifica nada. En realidad, solo desperdicia tu tiempo y el mío. – EJP

0

Creo que tiene que usar el administrador de transacciones J2EE, JTA para lograr esto.

+0

No es así. Voto abajo. – EJP

+0

El uso de 2 conexiones no es muy seguro para las transacciones. Con el administrador de transacciones JTA es posible lograr esta funcionalidad de manera transparente, http: //stackoverflow.com/questions/1961566/how-to-configure-transaction-management-for-working-with-2-different-db-in -sprin –

+0

Hubiera pensado que usar dos conexiones no era seguro para transacciones, pero esa afirmación no es lo mismo que 'tienes que usar'. OP no ha dicho nada sobre la seguridad de las transacciones en las bases de datos como un requisito, ni sobre estar en un entorno J2EE donde JTA esté incluso disponible. – EJP

Cuestiones relacionadas