java - 在 select 语句的 where 子句中使用 LIKE 和 OR 结果为 ' Too few parameters. Expected 1.'

标签 java ms-access jdbc sql-like

当我使用此代码在数据库 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.

我想按用户名或名字进行搜索,这就是我在此处放置 OR 的原因。

有人知道我哪里出了问题吗?

最佳答案

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

关于java - 在 select 语句的 where 子句中使用 LIKE 和 OR 结果为 ' Too few parameters. Expected 1.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13600460/

相关文章:

java - 安卓工作室 : how to remove navigation bar in android app to get a full screen view?

sql-server - MS Access 2007 查询不在 SQL Server 2008 上运行

java - DBCP(Apache Commons 数据库连接池)是否仍然相关?

java - 如何确保在 Java 中销毁 String 对象?

java - 可以在增强的 for 循环中使用数组初始化吗?

java - 比较 2 个整数值给出不同的输出

sql - Access 2007 : "SELECT COUNT(DISTINCT ..."

c# - 检索 MS Access 文件中的表列表

java - 如何归档 Java 和 C++ 应用程序之间的分布式(数据库)事务?

java - 如何使用java在mysql表中生成下一个值?