Использование LIKE и OR в предложении where оператора SELECT приводит к этому 'Слишком мало параметров. Ожидаемый 1.'
Когда я запрашиваю в моей базе данных Microsoft Access, с этим кодом..
dc.rs = dc.st.executeQuery("select count(*) from Accounts where username like '%"+searchTF.getText()+"%' OR firstname like '%"+searchTF.getText()+"%'");
Я получил этот результат, не уверен, что это ошибка, потому что она написана черным текстом.
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
Я хочу искать по имени пользователя или по имени, поэтому я поместил туда ИЛИ.
Кто-нибудь знает, где у меня возникли проблемы?
1 ответ
Microsoft Access использует * для подстановочного знака
MS Access также использует одинарные кавычки в соответствии с этой страницей
http://refactoringself.com/2011/06/22/ms-access-error-too-few-parameters-expected-x/
используя подготовленное заявление
String queryString = "select count(*) from Accounts where username like ? OR firstname like ?";
PreparedStatement stmt= con.prepareStatement(queryString );
stmt.setString(1, "*" + searchTF.getText() + "*");
stmt.setString(2, "*" + searchTF.getText() + "*");
stmt.executeQuery();
или менее безопасный способ
dc.rs = dc.st.executeQuery("select count(*) from Accounts where username like " +
"\'*" + searchTF.getText() + "\'* OR firstname like \'*" + searchTF.getText() + "*\'");