[Resolvido] JTable + consulta no banco de dados retornando mesmo registro

Boa noite galera!

Estou fazendo uma aplicação onde nela há uma tela de consulta, na qual o usuário pode pesquisar pelo nome.

O problema é que quando há vários registros com o mesmo nome, retorna a quantidade certa de registros porém com os dados iguais.

Por ex: Na tabela do banco há um Eduardo Dias e um Eduardo Machado, a consulta nessa caso retorna duas linhas com Eduardo Machado.

O método que monta a tabela é este:

[code]
public void montaTabela(ArrayList listaCliente){
DefaultTableModel modelo = new DefaultTableModel();
ClienteDAO cdao = new ClienteDAO();
modelo.addColumn(“ID”);
modelo.addColumn(“NOME”);
modelo.addColumn(“IDADE”);
modelo.addColumn(“DATA NASCIMENTO”);

    cdao.pesquisar(txtNomePesq.getText(), listaCliente);
    
   
    
    for(Cliente d: listaCliente){
        String[] linha = {d.getId().toString(), d.getNome(), d.getIdade().toString(), d.getDataNascimento()};
        modelo.addRow(linha);
        
    }

    
   
    tblPesqCliente.setModel(modelo);
}[/code]

E o DAO de consulta é este:

public List<Cliente> pesquisar( String nome, ArrayList<Cliente> listaCliente) {
        String sql = "Select * from Cliente where NOME like '%"+nome+"%'";
        Cliente e = new Cliente();
        try {
            PreparedStatement ps = Principal.conexao.getConexao().prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            while(rs.next()){
                e.setId(rs.getInt("ID"));
                e.setNome(rs.getString("NOME"));
                e.setIdade(rs.getInt("IDADE"));
                e.setDataNascimento(rs.getString("DATA_NASCIMENTO"));
                listaCliente.add(e);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ClienteDAO.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null,"Erro ao recuperar cliente do banco de dados");
        }


        return listaCliente;

O erro de lógica está em algum destes métodos???

Valeu pessoal,

abraços

Boa noite rizller.
O problema é que você esta inicializando Cliente fora do while.
O correto é.

public List<Cliente> pesquisar( String nome, ArrayList<Cliente> listaCliente) {   
        String sql = "Select * from Cliente where NOME like '%"+nome+"%'";   
        try {   
            PreparedStatement ps = Principal.conexao.getConexao().prepareStatement(sql);   
            ResultSet rs = ps.executeQuery();   
            while(rs.next()){   
               Cliente e = new Cliente();   
                e.setId(rs.getInt("ID"));   
                e.setNome(rs.getString("NOME"));   
                e.setIdade(rs.getInt("IDADE"));   
                e.setDataNascimento(rs.getString("DATA_NASCIMENTO"));   
                listaCliente.add(e);   
            }   
        } catch (SQLException ex) {   
            Logger.getLogger(ClienteDAO.class.getName()).log(Level.SEVERE, null, ex);   
            JOptionPane.showMessageDialog(null,"Erro ao recuperar cliente do banco de dados");   
        }   
  
  
        return listaCliente;

[quote=diego.sas]Boa noite rizller.
O problema é que você esta inicializando Cliente fora do while.
O correto é.

[code]
public List pesquisar( String nome, ArrayList listaCliente) {
String sql = “Select * from Cliente where NOME like '%”+nome+"%’";
try {
PreparedStatement ps = Principal.conexao.getConexao().prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
Cliente e = new Cliente();
e.setId(rs.getInt(“ID”));
e.setNome(rs.getString(“NOME”));
e.setIdade(rs.getInt(“IDADE”));
e.setDataNascimento(rs.getString(“DATA_NASCIMENTO”));
listaCliente.add(e);
}
} catch (SQLException ex) {
Logger.getLogger(ClienteDAO.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null,“Erro ao recuperar cliente do banco de dados”);
}

    return listaCliente;

[/code][/quote]

Muito obrigado!

Não acredito que fiquei o dia todo nesse erro bobo, hehehe.

Valeu,

abraços!