在select语句的where子句中使用LIKE和OR来实现这个'太少的参数。预期1.'

时间:2012-11-28 08:02:18

标签: java ms-access jdbc sql-like

当我在我的数据库中查询microsoft访问时,使用此代码..

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.

我想通过用户名或名字搜索,这就是我在那里放置OR的原因。

有谁知道我在哪里遇到问题?

1 个答案:

答案 0 :(得分:2)

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() + "*\'");