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. */packagerefeicaoDAO;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;/** * * @author BETO */publicclassConexao{staticConnectionconn=null;/** Creates a new instance of Conexao */publicConexao(){}publicstaticConnectionConectDB()throwsSQLException{try{Stringdsn="Ref01";Stringuser="postgres";Stringsenha="postdba";Class.forName("org.postgresql.Driver").getInterfaces();Stringurl="jdbc:postgresql://localhost:5432/"+dsn;conn=DriverManager.getConnection(url,user,senha);returnconn;}catch(Exceptione){System.out.println("Problema na abertura de dados"+e.getMessage());returnnull;}}//jdbc:postgresql://<@localhost:5432:ModuloComercial>publicstaticvoidCloseDB()throwsSQLException{conn.close();}publicstaticConnectiongetConexao()throwsExcRepositorio{Stringdsn="Ref01";Stringuser="postgres";Stringpassword="postdba";Stringdriver="org.postgresql.Driver";Stringurl="jdbc:postgresql://localhost:5432/"+dsn;try{Class.forName(driver);conn=DriverManager.getConnection(url,user,password);}catch(ClassNotFoundExceptione){thrownewExcRepositorio("Driver n�o Encontrado: "+e.getMessage());}catch(SQLExceptione){thrownewExcRepositorio("Erro ao Abrir a Conexão: "+e.getMessage());}returnconn;}}
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
L
Luiz_Carlos_Gon_lves
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) */packagetesteconexao;importjava.sql.*;importjavax.swing.JOptionPane;importjava.util.*;importjava.io.*;/** **************************************************************************** * * Define um padrao para objetos de conexao com bancos de dados SQL * Versao: 1.0 * Data: 07/10/2008 * * @pdOid 1 */publicclassConexao{/** @pdOid 2 */privatestaticStringusuario;/** @pdOid 3 */privatestaticStringsenha;/** @pdOid 4 */privatestaticStringservidor;/** @pdOid 5 */privatestaticStringbanco;/** @pdOid 6 */privatestaticStringporta;/** @pdOid 7 */privatestaticStringtipoServidor;privatestaticConnectioncon=null;privatestaticStatementstm;privatestaticPropertiespropConexao=null;privatestaticFileInputStreaminputFileProp;privatestaticFileOutputStreamoutputFileProp;privatestaticStringfileName="c:/onde vc colocou o arquivo/jdbc.properties";/** @pdOid 8 */publicstaticStringgetUsuario(){returnusuario;}/** * Atualiza usuario * @param newUsuario */publicstaticvoidsetUsuario(StringnewUsuario){usuario=newUsuario;}/** * Retorna a senha usada para acessar o banco * */publicstaticStringgetSenha(){returnsenha;}/** * Altera a senha do usuario * @param newSenha */publicstaticvoidsetSenha(StringnewSenha){senha=newSenha;}/** * Retorna o servidor atual * */publicstaticStringgetServidor(){returnservidor;}/** * Altera o servidor do banco de dados * @param newServidor */publicstaticvoidsetServidor(StringnewServidor){servidor=newServidor;}/** * Retorna o banco de dados utilizado * @return banco */publicstaticStringgetBanco(){returnbanco;}/** * Altera o banco de dados utilizado * @param newBanco */publicstaticvoidsetBanco(StringnewBanco){banco=newBanco;}/** * Retorna a porta de acesso * @return porta */publicstaticStringgetPorta(){returnporta;}/** * Altera a porta de acesso ao servidor do banco de dados * @param newPorta */publicstaticvoidsetPorta(StringnewPorta){porta=newPorta;}/** * Retorna o tipo de servidor utilizado * @return tipoServidor */publicstaticStringgetTipoServidor(){returntipoServidor;}/** * Altera o tipo de servidor utilizado * @param newTypeServer */publicstaticvoidsetTipoServidor(StringnewTypeServer){tipoServidor=newTypeServer;}/** * Retorna a conexão corrente; * @return con */publicstaticConnectiongetConexao(){returncon;}/** * Inicia a conexao com o banco de dados a partir das propriedades * contidas no arquivo jdbc.properties * @throws java.lang.Exception */publicstaticvoidabrir()throwsException{try{//abre o arquivo de propriedades inputFileProp=newFileInputStream(fileName);propConexao=newProperties();//carrega as propriedadespropConexao.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 propriedadesinputFileProp.close();}catch(FileNotFoundExceptione){//System.out.println("O arquivo não pode ser localizado!");e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}Stringdriver="",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}elseif(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}elseif(Conexao.getTipoServidor().equals("mysql")){driver="com.mysql.jdbc.Driver";url="jdbc:mysql://"+Conexao.getServidor()+":"+Conexao.getPorta()+"/"+Conexao.getBanco();// prepara para uma conexao via ODBC }elseif(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 selecionadoClass.forName(driver);try{//cria a conexao usando a url montada e demais informacoescon=java.sql.DriverManager.getConnection(url,Conexao.getUsuario(),Conexao.getSenha());}//senao...catch(SQLExceptionex){// automatico junto com try // se der erro, nao houver conexao, imprime mensagem de erroJOptionPane.showMessageDialog(null,ex.getMessage());}// fim catch}//fim do trycatch(ClassNotFoundExceptionex){// imprime mensagem se tiver erro na escrita do fornameex.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 */publicstaticvoidfechar()throwsException{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 */publicstaticvoidatualizar(Stringsql)throwsException{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 */publicstaticResultSetselecionar(Stringsql)throwsException{if(stm==null){abrir();}stm=con.createStatement();returnstm.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 */publicstaticvoidalterarPropriedades(StringnewUser,StringnewPass,StringnewServer,StringnewDB,StringnewPort,StringnewTS)throwsException{//se a conexao estiver ativa, deve ser fechada antesif((con!=null)||(stm!=null)){fechar();}try{//se propConexao for null, quer dizer que o metodo abrir ainda//nao foi chamadoif(propConexao==null){propConexao=newProperties();//abre o arquivo de propriedadesinputFileProp=newFileInputStream(fileName);//carrega o objeto de propriedadespropConexao.load(inputFileProp);//fecho o arquivo para e passo a editar as propriedadesinputFileProp.close();}//proceder o ajuste de cada propriedade se o parametro contiver//algum valorif(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=newFileOutputStream(fileName);propConexao.store(outputFileProp,"Propriedades ajustadas via soft");outputFileProp.close();}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}}//fim da classe Conexao
TiagoXavier
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…