【问题标题】:How to insert sqlite DB and use dynamic search in JAVA GUI JTable Swing?如何在 JAVA GUI JTable Swing 中插入 sqlite DB 并使用动态搜索?
【发布时间】:2018-05-05 11:59:29
【问题描述】:

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

    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();
        }
    }
    });

【问题讨论】:

  • 您应该使用state like ? 而不是state =?。区分大小写更可能与 sqlite stackoverflow.com/questions/15480319/… 有关
  • 非常感谢它的工作
  • 我可以在数据库的所有列中使用过滤器而不是仅在状态中过滤吗?
  • select sno,universityname,state,courses,applicationfees,deadline,admissionrequirment,undergrad,grad from UsaCollegeList where state like ? or sno like ? or universityname like ? or courses like ? 等等
  • 它似乎无法正常工作,并且没有错误消息

标签: java swing sqlite user-interface jtable


【解决方案1】:

你可以这样比较:

        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());

【讨论】:

  • 感谢代码的更正,但我之前尝试过使用 .toUpprCAse() 但它没有用。
  • 我可以添加更多的列来搜索像 where upper (state,course)=?;
  • 上层函数将字符串作为输入,因此您可以在一个字符串中使用更多列(例如连接 - || -)或在where upper(state) = ? and upper(course) = ?等更多条件下使用
【解决方案2】:
String text = "%" + textFieldSearch.getText() + "%";

String query = "select sno,universityname,state,courses,applicationfees,deadline,admissionrequirment,undergrad,grad from UsaCollegeList where sno = ? or universityname = ? or state = ? or courses = ? or applicationfees = ? or deadline = ? or admissionrequirment = ? or undergrad = ? or grad = ? ";
PreparedStatement pst = connection.prepareStatement(query);
pst.setString(1, text);
pst.setString(2, text);
pst.setString(3, text);
pst.setString(4, text);
pst.setString(5, text);
pst.setString(6, text);
pst.setString(7, text);
pst.setString(8, text);
pst.setString(9, text);
ResultSet rs=pst.executeQuery();

【讨论】:

  • 感谢我的朋友,它可以工作,但是需要将文本转换为 'pst.setString(1, (String)text);' 中的字符串
【解决方案3】:

感谢亲爱的朋友们,大家帮了我很多,我的项目完成了。

    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();
        }
    }
    });

【讨论】:

    猜你喜欢
    • 2019-08-26
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 2014-03-30
    • 2014-11-29
    • 2020-10-12
    相关资源
    最近更新 更多