Listar atraves de uma pesquisa do CPF

oi, estou fazendo um ArryList para listar o que for capturado, e apos isso fazer uma pesquisa especifica utilizando o cpf para mostrar os dados do usuario correspondente, porem foi uma primeira vez e agora quando clico no meu button para pesquisar todos os dados da tabela somem e não retorna a pesquisa. alguem poderia me ajudar por faovr.

//para fazer pesquisa
public ListpesquisarCpf (String pesquisa){

        Connection con;
        con = ConnectionFactory.getConnection();
        PreparedStatement stmt = null;
        ResultSet rs = null;
        
    List <cadastro> usuarios = new ArrayList<>();
    try {
        stmt = con.prepareStatement("SELECT * FROM usuario WHERE cpf=? ");
        stmt.setString(1,pesquisa);
        rs = stmt.executeQuery();
        
        while (rs.next()) {
            
           cadastro  usuario = new cadastro();
            usuario.setIdusuario(rs.getInt("idusuario"));
            usuario.setNome(rs.getString("nome"));
            usuario.setCpf(rs.getString("cpf"));
            usuario.setEmail(rs.getString("email"));
            usuario.setTelefone(rs.getString("telefone"));
            usuario.setDescricao(rs.getString("descricao"));
        
            usuarios.add(usuario);
            
        }
    } catch (SQLException ex) {
        Logger.getLogger(UsuarioDao.class.getName()).log(Level.SEVERE, null, ex);
    }
    return usuarios;
}

//metodo para listar a pesquisa
public void fazerPesquisa (String pesquisa) {
DefaultTableModel modelo = (DefaultTableModel) tbusuario.getModel();
modelo.setNumRows(0);

    UsuarioDao usuario = new UsuarioDao();

  for (cadastro p : usuario.pesquisarCpf(pesquisa)) {
        modelo.addRow(new Object[]{
            p.getIdusuario(),
            p.getNome(),
            p.getCpf(),
            p.getEmail(),
            p.getTelefone(),
            p.getDescricao(),
           
                
     });
  }

// botao de pesquisa por cpf

       fazerPesquisa(jTextField1.getText());

Se os dados desaparecem e não apresenta nada, provavelmente ocorreu alguma exceção. Seria interessante checar o log.

???

se você está buscando por cpf acredito que só poder ter um resultado, então você não precisa retornar um List, mas sim simplesmente um objeto de Usuario.
algo assim:
public Usuario buscarUsuarioPorCpf(String pesquisa){
Connection con;
con = ConnectionFactory.getConnection();
PreparedStatement stmt = null;
ResultSet rs = null;

try {
    stmt = con.prepareStatement("SELECT * FROM usuario WHERE cpf=? ");
    stmt.setString(1,pesquisa);
    rs = stmt.executeQuery();
    
    if (rs.next()) {
        
       cadastro  usuario = new cadastro();
        usuario.setIdusuario(rs.getInt("idusuario"));
        usuario.setNome(rs.getString("nome"));
        usuario.setCpf(rs.getString("cpf"));
        usuario.setEmail(rs.getString("email"));
        usuario.setTelefone(rs.getString("telefone"));
        usuario.setDescricao(rs.getString("descricao"));
    
        return usuario;
    
    }

ruturn null;
} catch (SQLException ex) {
Logger.getLogger(UsuarioDao.class.getName()).log(Level.SEVERE, null, ex);
}
}

}

ou algo parecido

1 curtida

Vamos lá, outras dicas/sugestões:
A busca é pelo cpf completo? se sim ele está somente números ou está formatado no bando de dados?
Quer uma busca incremental? use

"SELECT * FROM usuario WHERE cpf like ?% "

e peça para mostrar o erro de SQLException em uma mensagem para ver se tem algo errado.