【问题标题】:Selecting all data using LIKE in java by getting the string in jtextfield通过获取 jtextfield 中的字符串,在 java 中使用 LIKE 选择所有数据
【发布时间】:2019-02-01 16:31:34
【问题描述】:
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(); 
        }
    }

问题是我找不到合适的字符串来让我从文本字段中获取 SQL 中的 LIKE 术语

**使用这个字符串**

String Sql ="Select * from learners_info where lrn LIKE %?% ";

我似乎收到了这个错误:


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)

如果我试试这个字符串

String Sql ="Select * from learners_info where lrn LIKE '%'?'%' ";

我使用 system.out 打印了正在使用的字符串类型,它显示了这一点。

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

此查询有效,但似乎没有返回任何值

我很抱歉,因为我还是 java 数据库的新手。

【问题讨论】:

  • 第一次尝试时没有撇号,而第二次尝试的撇号太多。你可能想要LIKE '%1411237%' 之类的东西。但是你真正想要选择什么?
  • 我想选择 pst.setString(1, txtSearch.getText());值放在哪里? (问号)在 String Sql ="Select * from learners_info where lrn LIKE %?% ";

标签: java mysql netbeans-8


【解决方案1】:

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

String Sql ="Select * from learners_info where lrn LIKE ?";

然后尝试在 PreparedStatement setString() 方法中传递 %s 和 String 值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多