通过在jtextfield中获取字符串,在java中使用LIKE选择所有数据

通过在jtextfield中获取字符串,在java中使用LIKE选择所有数据,java,mysql,netbeans-8,Java,Mysql,Netbeans 8,问题是我找不到合适的字符串,无法在SQL from文本字段中获取类似的术语 **使用此字符串** try{ String Sql ="Select * from learners_info where lrn LIKE %?% "; pst=conn.prepareStatement(Sql); pst.setString(1, txtSearch.getText()); System.out.print(pst);

问题是我找不到合适的字符串,无法在SQL from文本字段中获取类似的术语

**使用此字符串**

try{

        String Sql ="Select * from learners_info where lrn LIKE %?% ";
        pst=conn.prepareStatement(Sql);
        pst.setString(1, txtSearch.getText());
        System.out.print(pst);
        rs = pst.executeQuery();



            DefaultTableModel ts = (DefaultTableModel)tableSearch.getModel();
            ts.setRowCount(0);


            while (rs.next()){
            Object searchTable[] = {
            rs.getInt("lrn"),
            rs.getString("learner_firstname"),
            rs.getString("learner_middlename"),
            rs.getString("learner_lastname"),
            };
            ts.addRow(searchTable);
            }
        }

        catch(Exception e){
        JOptionPane.showMessageDialog(null, "Invalid info idnumber");
        e.printStackTrace();
        }
        //
        finally {
        try {
            rs.close(); 
        } 
        catch (Exception e) {
        e.printStackTrace();
        }

        try {
            pst.close(); 
        } catch (Exception e) {
            e.printStackTrace(); 
        }

        try {

        } catch (Exception e) {
            e.printStackTrace(); 
        }
    }
我似乎得到了这个错误:



如果我尝试这个字符串

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3813)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3795)
at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4616)
我使用system.out打印了正在使用的字符串类型,它显示了这一点


此查询可以工作,但似乎不返回任何值


我很抱歉,因为我还不熟悉java中的数据库

从SQL字符串中删除“%”部分。试试这个:

com.mysql.jdbc.JDBC4PreparedStatement@414a0b8f: Select * from learners_info where lrn LIKE '%''1411237''%'

然后尝试在PreparedStatement
setString()
method

中传递%s和字符串值,第一次尝试时没有任何撇号,第二次尝试时撇号太多。您可能需要像“%1411237%”这样的
。但是您实际上想要选择什么呢?我想要选择pst.setString(1,txtSearch.getText())中值的所有相似项;其中,该值放在字符串Sql=“Select*from learners\u info where lrn LIKE%?%”中的“?”(问号)处;
String Sql ="Select * from learners_info where lrn LIKE '%'?'%' ";
com.mysql.jdbc.JDBC4PreparedStatement@414a0b8f: Select * from learners_info where lrn LIKE '%''1411237''%'
String Sql ="Select * from learners_info where lrn LIKE ?";