Problemas na conexão com BD usando uma classe que gerencia a conexão e um Crud Generico [Resolvido]
5 respostas
charles.eduardo
Pessoal estou tendo um problema que não estou conseguindo resolver, para vocês pode ser simples mais para mim está um
quebra cabeça daqueles. Estou usando o BD H2 e tento ler um arquivo de txt,cvs e gravar no BD fui testar a conexão e travei ali msm!
Para o pacote de Implementação da Persistencia na camada de persistencia tenho:
a classe gerenciadora de conexão
packagebr.com.edesignerbrasil.persistencia.impl;importbr.com.edesignerbrasil.execao.EdesignerBrasilException;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.Properties;classGerenciadorDeConexao{privatestaticStringdriver;privatestaticStringurl;privatestaticStringusuario;privatestaticStringsenha;//Metodo para iniciar a conexãoprivatestaticvoidinit()throwsEdesignerBrasilException{Propertiesproperties=newProperties();FileInputStreamarquivoDePropriedades=null;try{arquivoDePropriedades=newFileInputStream("database.properties");properties.load(arquivoDePropriedades);driver=properties.getProperty("jbdc.driver");url=properties.getProperty("jbdc.url");usuario=properties.getProperty("jbdc.usuario");senha=properties.getProperty("jbdc.senha");[b]Class.forName(driver)[/b];}catch(FileNotFoundExceptione){StringBuildermensagem=newStringBuilder("Não foi possivel se"+"conectar ao banco de dados.");mensagem.append("\n Motivo.:").append(e.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}catch(IOExceptione){StringBuildermensagem=newStringBuilder("Não foi possivel se"+"conectar ao banco de dados.");mensagem.append("\n Motivo.:").append(e.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}catch(ClassNotFoundExceptione){StringBuildermensagem=newStringBuilder("Não foi possivel se"+"conectar ao banco de dados.");mensagem.append("\n Motivo.:").append(e.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}}//Fim do metodo para iniciar a conexão//Metodo para pegar a conexãostaticConnectiongetConexao()throwsEdesignerBrasilException{try{init();returnDriverManager.getConnection(url,usuario,senha);}catch(SQLExceptione){StringBuildermensagem=newStringBuilder();mensagem.append("Não foi possivel se conectar ao banco de dados.");mensagem.append("\n Motivo.:").append(e.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}}//Fim do metodo para pegar a conexãostaticvoidcloseConexao(Connectioncon)throwsEdesignerBrasilException{closeConexao(con,null,null);}staticvoidcloseConexao(Connectioncon,PreparedStatementstmt)throwsEdesignerBrasilException{closeConexao(con,stmt,null);}staticvoidcloseConexao(Connectioncon,PreparedStatementstmt,ResultSetrs)throwsEdesignerBrasilException{try{if(rs!=null){rs.close();}if(stmt!=null){stmt.close();}if(con!=null){con.close();}}catch(SQLExceptionexc){StringBuildermensagem=newStringBuilder();mensagem.append("Não foi possível finalizar a conexão com banco de dados.");mensagem.append("\nMotivo: ");mensagem.append(exc.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}}}
packagebr.com.edesignerbrasil.persistencia.impl;importbr.com.edesignerbrasil.execao.EdesignerBrasilException;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;publicabstractclassGenericDAO{privatestaticfinallongserialVersionUID=1L;publicStatementgetStatement()throwsEdesignerBrasilException{try{returnGerenciadorDeConexao.getConexao().createStatement();}catch(SQLExceptione){StringBuildermensagem=newStringBuilder();mensagem.append("Não foi possivel se conectar ao banco de dados.");mensagem.append("\n Motivo.:").append(e.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}}publicPreparedStatementgetStatement(Stringst)throwsEdesignerBrasilException{try{returnGerenciadorDeConexao.getConexao().prepareStatement(st);}catch(SQLExceptione){StringBuildermensagem=newStringBuilder();mensagem.append("Não foi possivel se conectar ao banco de dados.");mensagem.append("\n Motivo.:").append(e.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}}publicResultSetexecuteQuery(Stringquery,Object...params)throwsEdesignerBrasilException{PreparedStatementps=getStatement(query);for(inti=0;i<params.length;i++){try{ps.setObject(i+1,params[i]);}catch(SQLExceptione){StringBuildermensagem=newStringBuilder();mensagem.append("Não foi possivel se conectar ao banco de dados.");mensagem.append("\n Motivo.:").append(e.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}}try{returnps.executeQuery();}catch(SQLExceptione){StringBuildermensagem=newStringBuilder();mensagem.append("Não foi possivel se conectar ao banco de dados.");mensagem.append("\n Motivo.:").append(e.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}}publicintexecuteCommand(Stringquery,Object...params)throwsEdesignerBrasilException{PreparedStatementps=getStatement(query);for(inti=0;i<params.length;i++){try{ps.setObject(i+1,params[i]);}catch(Exceptione){StringBuildermensagem=newStringBuilder();mensagem.append("Erro para tentativa.");mensagem.append(i);mensagem.append("com o valor");mensagem.append(params[i]);mensagem.append("\n Motivo.:").append(e.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}}intresult;try{result=ps.executeUpdate();ps.close();returnresult;}catch(SQLExceptione){StringBuildermensagem=newStringBuilder();mensagem.append("Não foi possivel se conectar ao banco de dados.");mensagem.append("\n Motivo.:").append(e.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}}publicIntegergetNextId(StringtableName)throwsEdesignerBrasilException{ResultSetrs=executeQuery("select MAX(ID) from APP."+tableName);try{rs.next();Objectresult=rs.getObject(1);if(result==null){rs.close();return1;}else{return((Integer)result)+1;}}catch(SQLExceptione){StringBuildermensagem=newStringBuilder();mensagem.append("Não foi possivel se conectar ao banco de dados.");mensagem.append("\n Motivo.:").append(e.getMessage());thrownewEdesignerBrasilException(mensagem.toString());}}}
A classe PaisDAO que extends a GenericDAO e implementa a Interface IPais
packagebr.com.edesignerbrasil.persistencia.impl;importbr.com.edesignerbrasil.dominio.Pais;importbr.com.edesignerbrasil.execao.EdesignerBrasilException;importbr.com.edesignerbrasil.persistencia.IPais;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.LinkedList;importjava.util.List;publicclassPaisDAOextendsGenericDAOimplementsIPais{publicPaisDAO(){}publicvoidsetAddPais(Paispais)throwsEdesignerBrasilException{pais.setId(getNextId("PAIS"));Stringquery="INSERT INTO APP.PAIS (ID,NOME_PAIS) VALUES (?,?)";executeCommand(query,pais.getId(),pais.getNome());//return pais.getId();}publicvoidsetRemovePais(intidPais)throwsEdesignerBrasilException{executeCommand("DELETE FROM APP.PAIS WHERE ID = ?",idPais);}publicvoidsetUpdatePais(Paispais)throwsEdesignerBrasilException{Stringquery="UPDATE APP.PAIS SET ID = ?,NAME=? WHERE ID = ?";executeCommand(query,pais.getNome(),pais.getId());}publicPaisgetPais(intidPais)throwsEdesignerBrasilException{ResultSetrs=executeQuery("SELECT * FROM APP.PAIS WHERE ID = ?",idPais);Paispais=null;try{while(rs.next()){pais=populatePais(rs);}rs.close();returnpais;}catch(SQLExceptionex){thrownewEdesignerBrasilException(ex.getMessage());}}publicList<Pais>getAllPais()throwsEdesignerBrasilException{ResultSetrs=executeQuery("SELECT * FROM APP.PAIS");List<Pais>toReturn=newLinkedList<Pais>();try{while(rs.next()){toReturn.add(populatePais(rs));}rs.close();returntoReturn;}catch(SQLExceptionex){thrownewEdesignerBrasilException(ex.getMessage());}}publicList<Pais>getPaisByName(Stringname)throwsEdesignerBrasilException{List<Pais>toReturn=newLinkedList<Pais>();ResultSetrs=executeQuery("SELECT * FROM APP.PAIS WHERE NAME LIKE ?",name+"%");try{while(rs.next()){toReturn.add(populatePais(rs));}rs.close();returntoReturn;}catch(SQLExceptionex){thrownewEdesignerBrasilException(ex.getMessage());}}publicstaticPaispopulatePais(ResultSetrs)throwsEdesignerBrasilException{PaistoReturn=newPais();try{toReturn.setId(rs.getInt("ID"));toReturn.setNome(rs.getString("NOME"));returntoReturn;}catch(SQLExceptionex){thrownewEdesignerBrasilException(ex.getMessage());}}}
a interface Fabrica de Persistencia no pacote persistencia