首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用任何过滤器在数据库中搜索

使用任何过滤器在数据库中搜索
EN

Stack Overflow用户
提问于 2021-10-26 18:55:54
回答 1查看 44关注 0票数 0

我已经创建了一个带有jTable的图形用户界面来向用户显示数据,用户可以使用任何他想要的过滤器进行搜索,但是,我需要标识一个jTextField为空或已填充。那么,如何检查jTextField是否为空并使else if起作用呢?

例如,用户插入一个名称(jTextFieldNOME)并单击该jButton,而不写入另一个jTextField (还有3或4个jTextField遵循类似的模式)。

现在的情况是只运行第一个else if:else if(jTextFieldNOME.getText() != null)

代码语言:javascript
复制
if(jTextFieldNOME.getText().equals("") && jTextFieldCPF.getText().equals("") && jTextFieldAPELIDO.getText().equals("") && jTextFieldIDADEMIN.getText().equals("") && jTextFieldIDADEMAX.getText().equals("")){

            JOptionPane.showMessageDialog(null, "Vazios\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 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);
            
            
        }
        }
        
        else if (jTextFieldAPELIDO.getText() != null){
            
            PreparedStatement ps=cn.prepareStatement("select cad_nome,cad_apelido,cad_cpf,cad_idade,cad_data from cad_pessoa where cad_apelido like ? order by cad_nome asc, cad_cpf asc nulls last ");
        ps.setString(1,"%" + jTextFieldAPELIDO.getText() + "%");

            ResultSet rs = ps.executeQuery();
            ps.execute();
            
        
        DefaultTableModel tm=(DefaultTableModel) jTableDADOS.getModel();
        tm.setRowCount(0);
        JOptionPane.showMessageDialog(null, "apelidos\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);

        }
        
        }
EN

回答 1

Stack Overflow用户

发布于 2021-10-27 13:55:10

好的,在这里做了一些研究和一些教程之后,下面是我所做的:

为了解决空jTextField并且仍然运行我不想要的if的问题,可以使用get length,在数据库中进行搜索之前,放入这个jTextField需要的一些字母或数字。

代码如下:

代码语言:javascript
复制
if(jTextFieldNOME.getText().equals("") && jTextFieldCPF.getText().equals("") && jTextFieldAPELIDO.getText().equals("") && jTextFieldIDADEMIN.getText().equals("") && jTextFieldIDADEMAX.getText().equals("")){

            JOptionPane.showMessageDialog(null, "Vazios\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 if(jTextFieldNOME.getText().length()>2) {
        
        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);

        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 if (jTextFieldAPELIDO.getText().length()>2){
            
            PreparedStatement ps=cn.prepareStatement("select cad_nome,cad_apelido,cad_cpf,cad_idade,cad_data from cad_pessoa where cad_apelido like ? order by cad_nome asc, cad_cpf asc nulls last ");
        ps.setString(1,"%" + jTextFieldAPELIDO.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);

        }
        
        }

在我的例子中,只有2个字节就足以在我的jTable中进行搜索和显示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69728530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档