我正在使用 NetBeans 8.0.2 制作库存管理系统。我有一个搜索功能,它从文本框中获取一个字符串/子字符串并搜索该列。我正在使用 LIKE 以便也可以搜索子字符串。早些时候我像这样使用 PreparedStatement:
query="SELECT * FROM `desktops` WHERE `Asset Code` like `%?%` ";
但是占位符不能放在反引号中,所以我得到一个异常:参数索引超出范围(1 > 参数数量,即 0)。
然后我使用 Statement 而不是 PreparedStatement 并将输入放入查询中,如下所示:
query="SELECT * FROM
desktopsWHERE
Assets 代码like
%"+value+"%";
//value 是来自文本框的输入。
这导致了以下异常:“where 子句”中的未知列“%Ru%”。 Ru 是我在文本框中输入的内容。
请提出一个不会给我任何异常并在搜索字符串/子字符串时返回值的解决方案。
最佳答案
您的查询必须看起来像
query="SELECT * FROM desktops WHERE `Asset Code` like '%"+value+"%'";
您必须在列名周围使用反引号,在 like 函数的值周围使用单引号。
但是 yourquery 与准备好的语句无关。
准备好的语句看起来像
query="SELECT * FROM desktops WHERE `Asset Code` like ?";
并且您必须稍后绑定(bind)这些值。
Here你会找到一个关于如何在 JAVA 中使用准备好的 stements 的例子
关于mysql - 在没有反引号的 MySQL 中使用 LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31450525/