Como conectar dos bases de datos
Hola que tal buen día a todos.
Como lo dice el titulo quiero, conectar dos bases de datos en una aplicación que estoy desarrollando, ya tengo la conexión a una que esta en un servidor remoto en postgresql, de esta bd realizo consultas, pero ahora quiero extraer información de la otra bd en la misma aplicación pero esta bd es local, hay alguna forma de mantener dos conexiones para cada una de las bases de datos y dentro de mi aplicacion elegir de cual quiero extraer información .
Para esto tengo una clase para la conexión ala bd remota que es esta:
package Servidor;
/**
*
* @author XXX
*/
import java.sql.*;
import javax.swing.*;
public class BDconexion {
public BDconexion(JFrame principal) {
this.principal=principal;
try {
Class.forName("com.postgresql.jdbc.Driver");
}
catch (ClassNotFoundException ex) {
//...
}
}//Fin del Constructor DBConnection
public void crearConexion(){
if(conexion==null){
try {
conexion = DriverManager.getConnection("jdbc:postgresql://XXX.XXX.XXX.XXX:5432/XX?user=XXX&password=XXX");
}
catch (SQLException ex) {
System.out.println("Servidor");
JOptionPane.showMessageDialog(principal,"Ocurrio un problema al encontrar la base de datos \n Asegurese de que su gestor de base de datos este correctamente iniciado");
System.out.println("Error Conectar:"+ex);
}
if(conexion!=null){
try {
statement = conexion.createStatement();
}
catch (SQLException ex1) {
System.out.println("Error statament:"+ex1);
JOptionPane.showMessageDialog(principal,"Ocurrio un problema al establecer la conexion con la base de datos");
}
}
}
}//Fin del metodo crearConexion
/**
* Mtodo que se encarga de enviar sentencias a la base de datos y recibir los datos producidos
* @param sql String
* @return ResultSet
*/
public ResultSet ejecutarRecibir(String sql){
crearConexion();
//System.out.println(sql);
ResultSet result=null;
try {
//System.out.println(sql);
result = statement.executeQuery(sql);
}
catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(principal,"Ocurrio un problema al ejecutar la siguiente sentencia:\n"+sql);
}
return result;
} //Fin del metodo ejecutarRecibir
/**
* mtodo que solo envia sentencias a la base de datos pero no se encarga de manejar los datos recibidos
* @param sql String
*/
public void ejecutarEnviar(String sql){
crearConexion();
try {
statement.execute(sql);
}
catch (SQLException ex) {
ex.printStackTrace();
//JOptionPane.showMessageDialog(null,ex.getCause());
JOptionPane.showMessageDialog(principal,"Ocurrio un problema al ejecutar la siguiente sentencia:\n"+sql);
}
} // Fin del metodo ejecutarEnviar
public Connection getConexion() {
return conexion;
}
private Connection conexion=null;
private Statement statement=null;
private JFrame principal;
}
podre incluir la otra conexión en eta clase?
espero y me puedan orientar un poco
PD. las XXX las puse para no poner los datos verdores
- Inicie sesión o regístrese para enviar comentarios
Diferentes instancias
Si, tendrias que tener dos instancias de
cada una parametrizada adecuadamente para realizar la conexion a la base que quieras.
Yo lo imagino que podria quedar de esta forma donde indicas los datos de conexion
YA QUEDÓ
Efectivamente tuve que crear dos instancias, una por cada conexión, y al enviar y recibir mis sentencias solo seleccione la conexión don de se mandaría, pero no se si es la manera mas adecuada para hacerlo, cabe mencionar que estoy ocupando sockets en donde el servidor de mi aplicación es el encargado de realizar las conexiones y recibir las peticiones de los clientes.