Search code examples
javasqlswingjdbcjtable

Searching with filters and showing in a jTable


I'm trying to search from a data base and showing the data on a jTable, but, i also want to show similar names.

The question is, use 'similar to' or 'like' to show similar names in any position?

Like, I want to show "Lucas Santos" and "Santos Jr" in the jTable if the user seach for "Santos" on the jTextField.

        try{
        Connection cn=DB.connector.getConnection();
        PreparedStatement ps=cn.prepareStatement("select cad_nome,cad_apelido,cad_cpf,cad_idade,cad_data from cad_pessoa where cad_nome similar to ? order by cad_nome asc, cad_cpf asc nulls last ");
        
        if(jTextFieldNOME.getText().equals("")){

            //JOptionPane.showMessageDialog(null, "Por favor completar o campo CPF!\n");
            PreparedStatement stm=cn.prepareStatement("select * from cad_pessoa ");
            ResultSet rs = stm.executeQuery();
            
            DefaultTableModel tm=(DefaultTableModel) jTableDADOS.getModel();
            tm.setRowCount(0);
        
        while(rs.next()){
            
            Object o []= {rs.getString("cad_cpf"), rs.getString("cad_nome"), rs.getString("cad_apelido"), rs.getString("cad_idade"), rs.getDate("cad_data")};
            tm.addRow(o);
            
            
        }
            
        }

        //else {
        
        
        ps.setString(1, jTextFieldNOME.getText());

            ResultSet rs = ps.executeQuery();
            ps.execute();
            
        
        DefaultTableModel tm=(DefaultTableModel) jTableDADOS.getModel();
        tm.setRowCount(0);
        
        while(rs.next()){
            
            Object o []= {rs.getString("cad_cpf"), rs.getString("cad_nome"), rs.getString("cad_apelido"), rs.getString("cad_idade"), rs.getDate("cad_data")};
            tm.addRow(o);
            
            
        }
        
    }
    catch (Exception e)
    {
        JOptionPane.showMessageDialog(this, e);
    }
}    

Solution

  • Here's the solution I'm using for this problem:

    else if(jTextFieldNOME.getText() != null) {
            
            PreparedStatement ps=cn.prepareStatement("select cad_nome,cad_apelido,cad_cpf,cad_idade,cad_data from cad_pessoa where cad_nome like ? order by cad_nome asc, cad_cpf asc nulls last ");
            ps.setString(1,"%" + jTextFieldNOME.getText() + "%");
    
                ResultSet rs = ps.executeQuery();
                ps.execute();
                
            
            DefaultTableModel tm=(DefaultTableModel) jTableDADOS.getModel();
            tm.setRowCount(0);
            JOptionPane.showMessageDialog(null, "nomes\n");
            while(rs.next()){
                
                Object o []= {rs.getString("cad_cpf"), rs.getString("cad_nome"), rs.getString("cad_apelido"), rs.getString("cad_idade"), rs.getDate("cad_data")};
                tm.addRow(o);
                
                
            }