Выбор всех данных с помощью LIKE в Java, получая строку в Jtextfield

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

Проблема в том, что я не могу найти правильную строку для использования, чтобы получить термины LIKE в SQL из текстового поля

** Используя эту строку **

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.

  • 0
    В первой попытке у вас нет апострофов, а во второй - слишком много. Вы, вероятно, хотите что-то вроде LIKE '%1411237%' . Но что вы на самом деле хотите выбрать?
  • 0
    Я хочу выбрать все термины LIKE значения внутри pst.setString (1, txtSearch.getText ()); где значение находится где "?" (Знак вопроса) в строке Sql = "Выбрать * из learners_info, где lrn LIKE%?%";
Теги:
netbeans-8

1 ответ

0
Лучший ответ

Удалите части '%' из строки SQL. Попробуйте с этим:

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

Затем попробуйте передать% s вместе со значением String в свой метод setString()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню