Java Banco de dados

Ola pessoal tenho a classe conexao logo a baixo, agora to precisando de fazer o seguinte esquema,
tenho um sistema que trabalha com apenas 1 banco de dados (POSTGRES) queria fazer o mesmo trabalhar
com varios bancos. tipo assim

O cara entra no sistema

loguin :
Senha:
Empresa: <— aki ele determina o banco q ele vai esta utilzando

Lembando e um sitema grande e ja esta pronto… queria saber a forma mais facil de eu fazer isso;
e que vai dar mesnos trabalho?



/*
 * Conexao.java
 *
 * Created on 1 de Janeiro de 2008, 22:43
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package refeicaoDAO;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;



/**
 *
 * @author BETO
 */
public class Conexao {
    static Connection conn = null;
    /** Creates a new instance of Conexao */
    public Conexao() {
    }
    
    
public static Connection ConectDB() throws SQLException{
	try{
		String dsn="Ref01";
		String user="postgres";
		String senha="postdba";
              
                      
		Class.forName("org.postgresql.Driver").getInterfaces();
                String url="jdbc:postgresql://localhost:5432/"+dsn;

                conn = DriverManager.getConnection(url,user,senha);
		return conn;
        }catch (Exception e){
		System.out.println("Problema na abertura de dados"+e.getMessage());
                return null;
	}
}//jdbc:postgresql://<@localhost:5432:ModuloComercial>
public static void CloseDB() throws SQLException{
	
		conn.close();
	}


 public static Connection getConexao() throws ExcRepositorio {
		String dsn="Ref01";
		String user="postgres";
		String password="postdba";  
                String driver="org.postgresql.Driver";
                String url="jdbc:postgresql://localhost:5432/"+dsn;
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, user, password);
		} catch (ClassNotFoundException e) {
			throw new ExcRepositorio("Driver n�o Encontrado: " + e.getMessage());
		} catch (SQLException e) {
			throw new ExcRepositorio("Erro ao Abrir a Conexão: " + e.getMessage());
		}
		return conn;
	}
	
}


	

Com o que vc forneceu so da pra concluir que vc tem que alterar os metodos ConectDB() e getConexao() usando o que foi digitado no login.
Agora como vc vai usar essa informação nesses metodos depende muito do resto da estrutura do sistema.
Caso vc tenha essas informaçoes numa servlet de sessao basta regastar esses dados e usa-lo.
Acho muito mais facil fazer isso do que mudar esses metodos passando parametros de login - o que acarretaria mudar todas as chamadas dessa classes.

/peace

Com as devidas alterações esta classe pode te ajudar. Basta usar o método altera propriedades com os parâmetros adequados.

/** 
 * @Autor:  Luiz Carlos
 * @Proposta: Define uma classe geral para conexao com banco de dados usando
 *            JDBC
 * @Versao: 1.0
 * @NotadeVersao: A classe foi testada no acesso de bancos de dados MySQL(5.0), 
 *                SQLServer(2000), Firebird(2.01) e Conexao ODBC(32bits)
 */
package testeconexao;

import java.sql.*;
import javax.swing.JOptionPane;
import java.util.*;
import java.io.*;

/** ****************************************************************************
 * 
 * Define um padrao para objetos de conexao com bancos de dados SQL
 * Versao: 1.0
 * Data: 07/10/2008
 * 
 * @pdOid 1 */
public class Conexao {

    /** @pdOid 2 */
    private static String usuario;
    /** @pdOid 3 */
    private static String senha;
    /** @pdOid 4 */
    private static String servidor;
    /** @pdOid 5 */
    private static String banco;
    /** @pdOid 6 */
    private static String porta;
    /** @pdOid 7 */
    private static String tipoServidor;
    private static Connection con = null;
    private static Statement stm;
    private static Properties propConexao = null;
    private static FileInputStream inputFileProp;
    private static FileOutputStream outputFileProp;
    private static String fileName = "c:/onde vc colocou o arquivo/jdbc.properties";

    /** @pdOid 8 */
    public static String getUsuario() {
        return usuario;
    }

    /**
     * Atualiza usuario
     * @param newUsuario
     */
    public static void setUsuario(String newUsuario) {
        usuario = newUsuario;
    }

    /**
     * Retorna a senha usada para acessar o banco
     * 
     */
    public static String getSenha() {
        return senha;
    }

    /**
     * Altera a senha do usuario
     * @param newSenha
     */
    public static void setSenha(String newSenha) {
        senha = newSenha;
    }

    /**
     * Retorna o servidor atual
     * 
     */
    public static String getServidor() {
        return servidor;
    }

    /**
     * Altera o servidor do banco de dados
     * @param newServidor
     */
    public static void setServidor(String newServidor) {
        servidor = newServidor;
    }

    /**
     * Retorna o banco de dados utilizado
     * @return banco
     */
    public static String getBanco() {
        return banco;
    }

    /**
     * Altera o banco de dados utilizado
     * @param newBanco
     */
    public static void setBanco(String newBanco) {
        banco = newBanco;
    }

    /**
     * Retorna a porta de acesso
     * @return porta
     */
    public static String getPorta() {
        return porta;
    }

    /**
     * Altera a porta de acesso ao servidor do banco de dados
     * @param newPorta
     */
    public static void setPorta(String newPorta) {
        porta = newPorta;
    }

    /**
     * Retorna o tipo de servidor utilizado
     * @return tipoServidor
     */
    public static String getTipoServidor() {
        return tipoServidor;
    }

    /**
     * Altera o tipo de servidor utilizado
     * @param newTypeServer
     */
    public static void setTipoServidor(String newTypeServer) {
        tipoServidor = newTypeServer;
    }
    
    /**
     * Retorna a conexão corrente;
     * @return con
     */
    public static Connection getConexao(){
        return con;
    }

    /**
     * Inicia a conexao com o banco de dados a partir das propriedades
     * contidas no arquivo jdbc.properties 
     * @throws java.lang.Exception
     */
    public static void abrir() throws Exception {

        try {

            //abre o arquivo de propriedades  
            inputFileProp = new FileInputStream(fileName);

            propConexao = new Properties();

            //carrega as propriedades
            propConexao.load(inputFileProp);

            Conexao.setUsuario(propConexao.getProperty("USER_NAME").toString());
            Conexao.setSenha(propConexao.getProperty("PASSWORD").toString());
            Conexao.setServidor(propConexao.getProperty("SERVER").toString());
            Conexao.setBanco(propConexao.getProperty("DATABASE").toString());
            Conexao.setPorta(propConexao.getProperty("PORT").toString());
            Conexao.setTipoServidor(
                    propConexao.getProperty("TYPE_SERVER").toString());

            //fechar o arquivo de propriedades
            inputFileProp.close();

        } catch (FileNotFoundException e) {
            //System.out.println("O arquivo não pode ser localizado!");
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        String driver = "", url = "";
        //======================================================================
        //INICIO DA SELECAO DO DRIVER DO BANCO DE DADOS
        //======================================================================
        // prepara a conexao para um banco FIREBIRD
        /*
         * A url montada neste caso e muito especifica para o "Firebird"
         * note que ao final dela acrescentamos a string "?sql_dialect=3"
         * que informa o dialeto que sera usado na conexao.
         */ 
        if (Conexao.getTipoServidor().equals("firebird")) {

            driver = "org.firebirdsql.jdbc.FBDriver";
            url = "jdbc:firebirdsql:" + Conexao.getServidor() + ":" +
                    Conexao.getBanco() + "?sql_dialect=3";

        // prepara a conexao para um  banco MICROSOFT SQLSERVER
        } else if (Conexao.getTipoServidor().equals("sqlserver")) {

            driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
            url = "jdbc:microsoft:sqlserver://" + Conexao.getServidor() + ":" +
                    Conexao.getPorta() + ";DatabaseName=" + Conexao.getBanco();

        // prepara a conexao para um banco MYSQL
        } else if (Conexao.getTipoServidor().equals("mysql")) {

            driver = "com.mysql.jdbc.Driver";
            url = "jdbc:mysql://" + Conexao.getServidor() + ":" +
                    Conexao.getPorta() + "/" + Conexao.getBanco();

        // prepara para uma conexao via ODBC    
        } else if (Conexao.getTipoServidor().equals("odbc")) {

            driver = "sun.jdbc.odbc.JdbcOdbcDriver";
            url = "jdbc:odbc:" + Conexao.getBanco();

        }
        //======================================================================
        //FIM DA SELECAO DO DRIVER DO BANCO DE DADOS
        //======================================================================        

        try {

            // instanciando o driver selecionado
            Class.forName(driver);

            try {

                //cria a conexao usando a url montada e demais informacoes

                con = java.sql.DriverManager.getConnection(url,
                        Conexao.getUsuario(), Conexao.getSenha());


            } //senao...
            catch (SQLException ex) { // automatico junto com try 
                // se der erro, nao houver conexao, imprime mensagem de erro
                JOptionPane.showMessageDialog(null, ex.getMessage());
            } // fim catch

        } //fim do try
        catch (ClassNotFoundException ex) {

            // imprime mensagem se tiver erro na escrita do forname

            ex.printStackTrace();

        } // fim catch

    } //fim de abrir()

    /**
     * 
     * Fecha a conexao com o banco de dados e permite a alteracao das
     * propriedades de conexao
     * 
     * @throws java.lang.Exception
     */
    public static void fechar() throws Exception {
        if (stm != null) {
            stm.close();
        }
        if (con != null) {
            con.close();
        }
    }

    /**
     * Permite enviar para o banco instrucoes de atualizacao (update,delete e 
     * insert)
     * @param sql
     * @throws java.lang.Exception
     */
    public static void atualizar(String sql) throws Exception {
        if ((con == null) || (stm == null)) {
            abrir();
        }
        stm = con.createStatement();
        stm.execute(sql);
    }

    /**
     * Permite processar e recuperar consultas SQL
     * @param sql
     * @return
     * @throws java.lang.Exception
     */
    public static ResultSet selecionar(String sql) throws Exception {
        if (stm == null) {
            abrir();
        }
        stm = con.createStatement();
        return stm.executeQuery(sql);
    }

    /**
     * Permite alterar as propriedades de conexao e grava-las no arquivo
     * jdbc.properties
     * @param newUser
     * @param newPass
     * @param newServer
     * @param newDB
     * @param newPort
     * @param newTS
     * @throws java.lang.Exception
     */
    public static void alterarPropriedades(
            String newUser, String newPass,
            String newServer, String newDB,
            String newPort, String newTS) throws Exception {

        //se a conexao estiver ativa, deve ser fechada antes
        if ((con != null) || (stm != null)) {
            fechar();
        }
        try {

            //se propConexao for null, quer dizer que o metodo abrir ainda
            //nao foi chamado
            if (propConexao == null) {

                propConexao = new Properties();

                //abre  o arquivo de propriedades
                inputFileProp = new FileInputStream(fileName);

                //carrega o objeto de propriedades
                propConexao.load(inputFileProp);

                //fecho o arquivo para e passo a editar as propriedades
                inputFileProp.close();
            }

            //proceder o ajuste de cada propriedade se o parametro contiver
            //algum valor

            if (newUser != null) {
                if (!newUser.isEmpty()) {
                    propConexao.setProperty("USER_NAME", newUser);
                }
            }
            if (newPass != null) {
                if (!newPass.isEmpty()) {
                    propConexao.setProperty("PASSWORD", newPass);
                }
            }
            if (newServer != null) {
                if (!newServer.isEmpty()) {
                    propConexao.setProperty("SERVER", newServer);
                }
            }
            if (newDB != null) {
                if (!newDB.isEmpty()) {
                    propConexao.setProperty("DATABASE", newDB);
                }
            }
            if (newPort != null) {
                if (!newPort.isEmpty()) {
                    propConexao.setProperty("PORT", newPort);
                }
            }
            if (newTS != null) {
                if (!newTS.isEmpty()) {
                    propConexao.setProperty("TYPE_SERVER", newTS);            //abre o arquivo para gravacao das informacoes
                }
            }
            outputFileProp = new FileOutputStream(fileName);
            propConexao.store(outputFileProp, "Propriedades ajustadas via soft");
            outputFileProp.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}//fim da classe Conexao

aeugenio … perfeito acho
q uma sessao+serlet daria certo
O q não entendedo, e como eu chamaria servlet e rotornaria o valor para uma classe java.

Falando de serlets tenho poca noção como funciona…