【问题标题】:MySQL like query for searching substring in a database table用于在数据库表中搜索子字符串的 MySQL 类似查询
【发布时间】:2019-12-09 23:39:39
【问题描述】:

我已将数据保存在我的 MySQL 数据库表中。我正在使用 jTextField 来获取用户输入。我想在 jtable 中显示用户输入子字符串是一部分的行。

我试过的代码:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        try{

            Class.forName("com.mysql.jdbc.Driver");
            Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/date","root","");
            String query="SELECT * FROM ok where day like '%=?%'";
            PreparedStatement prepstmt=conn.prepareStatement(query);
           prepstmt.setString(1,jTextField2.getText());   // include this for showing only particular row else remove this line
            ResultSet rs=prepstmt.executeQuery(); 
            jTable1.setModel(DbUtils.resultSetToTableModel(rs));

        }catch(Exception e){

            JOptionPane.showMessageDialog(null, e);
        }

    } 

在我的情况下,要搜索的子字符串由用户在 jTextField1 中输入,我想使用该用户输入。

请更正我的 **String query=""; **

【问题讨论】:

    标签: java mysql substring sql-like


    【解决方案1】:

    我相信库不会替换 ? 内部字符串。您需要执行以下操作:

    String query="SELECT * FROM ok WHERE day LIKE CONCAT('%', ?, '%')";
    

    您也可以使用 Java 构建字符串:

    String query="SELECT * FROM ok WHERE day LIKE ?";
    PreparedStatement prepstmt = conn.prepareStatement(query);
    prepstmt.setString(1, '%' + jTextField2.getText() + '%');
    

    您可能希望从用户提供的字符串中删除 %_ 字符。

    【讨论】:

    • 是的,它现在正在工作,但是在查询执行后它在表中什么都没有显示
    • 表格是否包含特定字符串?喜欢foo=textfieldcontentbar= 是故意的吗?
    • @SamlanA 删除了 = 符号,现在它可以工作了。谢谢。你能解释一下 = 符号的原因吗?
    • 你在原始代码中有它,所以我按原样添加它!
    • 好的。还有一件事我们可以做任何事情来忽略其搜索的子字符串的大小写
    猜你喜欢
    • 2011-11-23
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    相关资源
    最近更新 更多