当前位置: 首页 > 知识库问答 >
问题:

如何使用java过滤mysql中的数据并在jtable中显示

卜弘文
2023-03-14

我有一个数据表(t1)

这是我的代码,

    btnSearch = new JButton();
    btnSearch.setBackground(new java.awt.Color(51, 51, 255));
    btnSearch.setText("Search");
    btnSearch.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
                String search =txtSearch.getText(); 
                try{
                    conn = DriverManager.getConnection( "jdbc:mysql://localhost/bibodent", "root", "" );
                String query = "SELECT name_doctor, mobile_doctor, phone_doctor, mail_doctor, city_doctor, spec_doctor, adres_doctor, note_doctor FROM doctor WHERE name_doctor LIKE '%" + txtName.getText() + "%' ";

                ps = conn.prepareStatement(query);
                ps.setString(1, search);
                ResultSet rs = ps.executeQuery(query);
                t1.setModel(DbUtils.resultSetToTableModel(rs));

            }catch (Exception e){
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, e);
            }

        }
    });

共有2个答案

黄聪
2023-03-14

这将搜索其中包含“A”的所有name_doctor。

String query="Select * From doctor where name_doctor like %A%";

本文档有更多细节:https://www.tutorialspoint.com/mysql/mysql-like-clause.htm

罗淮晨
2023-03-14

在您的代码中有查询字符串:

从医生中选择…其中name_doctor类似“%”txtName.getText()“%”“

哪个不包含任何< code >?标记在里面。所以不需要有< code>ps.setString(1,搜索);因为您已经通过在查询字符串中追加< code>txtName.getText()来设置查询的参数,如下所示:

从医生中选择…其中name_doctor类似“%”txtName.getText()“%”“

不建议在查询字符串中附加参数,因为这样会有错误,而且其中没有类型检查。更优雅的方法是使用<code>PreparedStatement在查询中标记。

那么,正如MadProgrammer为每个<code>所指出的那样在查询中,您应该设置参数useps。设置字符串(n,搜索)n第一次出现时注视1 。因此,您可能希望将查询字符串更改为:

从医生中选择…其中name_doctor是什么 并且它应该工作。

代码中更重要的一点是执行查询的位置:

ResultSet rs=ps.executeQuery(查询)

使用<code>定义查询字符串后 使用参数<code>query<code>执行<code>ps<code>是一个常见错误!这样,ps将忽略设置的参数,然后使用运行原始查询 在其中。没有得到此错误的原因是您没有使用<code>参数化查询字符串 。因此,在设置<code>ps之后。设置字符串(n,搜索)您应该在没有任何参数的情况下执行ps

< code > ResultSet RS = PS . execute query();

希望这有帮助!

 类似资料:
  • 我想在JTable中显示MySQL中的数据,但只显示了表中的最后一行。请帮帮我。我知道我有一个问题,因为jt=newjtable(数据,列)每次都为每行创建一个新表(删除之前的),但我找不到正确的选项。

  • 问题内容: 我正在使用jdbc编写程序,该程序将成为数据库的接口(类似于CRUD应用程序)。我假设我必须编写一个类(例如),该类将对数据库执行所有操作(以及可能会简化为这些操作的某些其他逻辑)。用户界面由一组表和一些按钮组成。要使用Jtable,我需要实现一个类(例如),它是AbstractTableModel的子类。因此,此类将向用户显示我的数据。我需要为数据库架构中的所有表实现这种模型。我不想

  • 问题内容: 如何过滤Java中的数组? 我有一系列对象,例如汽车: 类: 用: 现在我要过滤汽车阵列,只保留4门或更多: 我应该怎么做? 在使用Vector之前,请执行以下操作: 然后,我将使用Vector的大小创建一个新数组。然后,我将再次遍历向量并填充新数组。我知道这对于简单的事情来说是一个非常大的过程。 我正在使用J2ME。 问题答案: 编辑: 看到ArrayList不在J2ME中,但是基于

  • 我在java fx中有一个tableview,它显示不同类型的数据,如字符串和整数。我想有一个数据过滤器,这样它就可以自动在table View中显示数据。我怎样才能做到这一点呢?目前我正在使用一个函数,但它不起作用。注意:“pers”是我正在使用的类的一个对象

  • 我有以下数据: 现在我想以这样一种方式过滤数据,我可以删除第6行和第7行,对于特定的uid,我想在代码中只保留一行值为'c' 所以预期的数据应该是: 我使用的窗口函数如下所示:

  • 问题内容: 基本上,我有一个名为的结构,主题包含,以及一个标志(有关说明,请参见下面的屏幕截图)。 在应用程序中,我想过滤数据,仅显示具有的主题。 这就是我想要做的: 但这是行不通的。我应该如何处理?在此先感谢您的帮助。 问题答案: 您那里有一些小错误。总体来说还算不错,但是结合起来它们将永远无法正常工作: 调用任何方法都将返回一个新对象 您需要先过滤其价值 您需要遍历结果 结合这些: 我们会定期