Java 用于在数据库表中搜索子字符串的类似MySQL的查询

Java 用于在数据库表中搜索子字符串的类似MySQL的查询,java,mysql,substring,sql-like,Java,Mysql,Substring,Sql Like,我已将数据保存在MySQL数据库表中。我使用jTextField获取用户输入。我想在jtable中显示用户输入子字符串所在的行 我试过的代码: private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { try{ Class.forName("com.mysql.jdbc.Driver");

我已将数据保存在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="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删除了=符号,现在它工作了。谢谢你能解释一下=符号的原因吗?你在原始代码中有它,所以我按原样添加了它!好啊还有一件事,我们可以做任何事情来忽略子字符串的搜索情况吗