Estou dando um select dentro da minha DAO e adicionando para dentro de uma list, mas na hora de imprimir a list aparece os dados do último cadastro repetidamente, no mesmo número de linhas que deveria aparecer os outros cadastros.
Segue abaixo o código da DAO:
public List<portariaBean> consultaGeral(portariaBean bean)throws Exception,SQLException {
List<portariaBean> lista = new ArrayList<portariaBean>();
String sql = "SELECT * FROM "+bean.getTabela()+" WHERE "+bean.getColunaTabela()+" LIKE '%"+bean.getBusca()+"%'";
PreparedStatement stmt= (PreparedStatement)connDB.connect(bean).prepareStatement(sql);
rs=stmt.executeQuery();
while(rs.next()){
bean.setCodigo(rs.getString("id"));
bean.setNome(rs.getString("nome"));
lista.add(bean);
}
rs.close();
stmt.close();
return lista;
}
Dani, naum concatene Strings no SQL…e leia a apostila FJ21 da Caelum na parte de DAO…
veja o exemplo
publicclassClientesDAO{privateConnectioncon;publicClientesDAO(){this.con=Conexao.getConnection();}publicList<Clientes>getClientes(StringnomCli,StringsobNomCli){List<Clientes>lista=newArrayList();PreparedStatementstm=this.con.prepareStatement("SELECT * FROM Clientes WHERE CliNom = ? AND CliSobNome = ? ORDER BY CliNom");stm.setString(1,nomCli);stm.setString(2,sobNomCli);ResultSetrs=stm.executeQuery();while(rs.next()){Clientescli=newClientes();//aqui eu pego e populo o bean de clientescli.setCliNom(rs.getString("CliNom");cli.setCliSobNom(rs.getString("CliSobNom"));lista.add(cli);}stm.close();rs.close();returnlista;}//pegando os valores e exibindo.publicstaticvoidmain(String[]args){ClientesDAOcliDAO=newClientesDAO();List<Clientes>lista=cliDAO.getClientes("Fernando","Paiva");for(Clientesc:lista){System.out.println(c.getCliNom());System.out.println(c.getCliSobNom());}}
Basicamente eh isso, leia a apostila FJ21 da Caelum q tem muita coisa sobre DAO. E pare de concatenar String nos seus SQL.
t+ e boa sorte.
Dani_Gomes
fernandopaiva.
Onde encontro esta apostila?
O meu problema não é na concatenação e sim na lista, que não está passando os dados corretamente.
fernandopaiva
sim sim, realmente esta na lista mas isso se deve a forma como implementou seu DAO, veja o exemplo q fiz q vc consegue acertar.
para baixar a apostila FJ11 e FJ21, digite no google …Apostilas Caelum FJ21 e FJ11, vc vai encontra-las facilmente…a FJ21 na parte de DAO vai clarear sua mente.
Onde o fernandopaiva diz que pega e popula o bean, na verdade ele faz uma nova(new) instancia do bean, que é onde o novo cadastro do select será armazenado para dentro da list.
Abraços.