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.
Удалите части '%' из строки SQL. Попробуйте с этим:
String Sql ="Select * from learners_info where lrn LIKE ?";
Затем попробуйте передать% s вместе со значением String в свой метод setString()
LIKE '%1411237%'
. Но что вы на самом деле хотите выбрать?