如何在JAVA GUI JTable Swing中插入sqlite DB并使用动态搜索?

如何在JAVA GUI JTable Swing中插入sqlite DB并使用动态搜索?,java,swing,sqlite,user-interface,jtable,Java,Swing,Sqlite,User Interface,Jtable,我正在使用try catch块过滤sqlite数据库中的数据,我有两个问题此程序区分大小写,我需要它不区分大小写,然后它只在我写入数据库中给定的确切名称时过滤数据。请帮助使其成为动态过滤器 textFieldSearch = new JTextField(); textFieldSearch.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent ar

我正在使用
try catch
块过滤
sqlite数据库中的数据
,我有两个问题此程序区分大小写,我需要它不区分大小写,然后它只在我写入数据库中给定的确切名称时过滤数据。请帮助使其成为动态过滤器

    textFieldSearch = new JTextField();
    textFieldSearch.addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent arg0) {
            try {
            String query = "select sno,universityname,state,courses,applicationfees,deadline,admissionrequirment,undergrad,grad from UsaCollegeList where  state=? ";
            PreparedStatement pst = connection.prepareStatement(query);
            pst.setString(1, (String)textFieldSearch.getText());
            ResultSet rs=pst.executeQuery();

            table.setModel(DbUtils.resultSetToTableModel(rs));

            pst.close();

        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "error");
            e.printStackTrace();
        }
    }
    });

您可以按如下方式进行比较:

        String query = "select sno,universityname,state,courses,applicationfees,deadline,admissionrequirment,undergrad,grad from UsaCollegeList where  upper(state)=? ";
        PreparedStatement pst = connection.prepareStatement(query);
        pst.setString(1, textFieldSearch.getText().toUpperCase());

谢谢我亲爱的朋友们,每个人都帮了我很多,我完成了我的项目

    textFieldSearch = new JTextField();
    textFieldSearch.addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent arg0) {
            try {
                String text = "%" + textFieldSearch.getText() + "%";
                String query = "select sno,state from UsaCollegeList where sno like ? or state like ?";
                PreparedStatement pst = connection.prepareStatement(query);
                pst.setString(1, (String)text);
                pst.setString(2, (String)text);
                ResultSet rs=pst.executeQuery();

            table.setModel(DbUtils.resultSetToTableModel(rs));

            pst.close();

        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "error");
            e.printStackTrace();
        }
    }
    });

您应该像?一样使用
状态,而不是
状态=?
。区分大小写更可能与sqlite相关,这要感谢它发挥了巨大的作用。我可以在数据库的所有列中使用筛选器,而不是仅在州中使用筛选器吗?
选择sno、大学名称、州、课程、申请费、截止日期、录取要求、本科、美国大学毕业生,如州所示?还是不喜欢?还是大学的名字?或者像?
这样的课程,它似乎不起作用,并且没有错误消息感谢代码中的更正,但我之前尝试使用.toUpprCAse(),但它不起作用。我可以添加更多的列来搜索,比如where upper(state,course)=?;Upper函数有字符串作为输入,所以您可以在一个字符串中使用更多的列(例如,连接-| |-或在更多的条件下,如
其中Upper(state)=?和upper(当然)=?
谢谢我的朋友它可以工作,但是文本需要在'pst.setString(1,(string)text);'中转换为字符串
    textFieldSearch = new JTextField();
    textFieldSearch.addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent arg0) {
            try {
                String text = "%" + textFieldSearch.getText() + "%";
                String query = "select sno,state from UsaCollegeList where sno like ? or state like ?";
                PreparedStatement pst = connection.prepareStatement(query);
                pst.setString(1, (String)text);
                pst.setString(2, (String)text);
                ResultSet rs=pst.executeQuery();

            table.setModel(DbUtils.resultSetToTableModel(rs));

            pst.close();

        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "error");
            e.printStackTrace();
        }
    }
    });