Использование 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() + "*\'");
Другие вопросы по тегам