mysql - 在没有反引号的 MySQL 中使用 LIKE

标签 mysql exception prepared-statement

我正在使用 NetBeans 8.0.2 制作库存管理系统。我有一个搜索功能,它从文本框中获取一个字符串/子字符串并搜索该列。我正在使用 LIKE 以便也可以搜索子字符串。早些时候我像这样使用 PreparedStatement:

query="SELECT * FROM `desktops` WHERE `Asset Code` like `%?%` ";

但是占位符不能放在反引号中,所以我得到一个异常:参数索引超出范围(1 > 参数数量,即 0)

然后我使用 Statement 而不是 PreparedStatement 并将输入放入查询中,如下所示:

query="SELECT * FROMdesktopsWHERE 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/

相关文章:

带有特殊字符和数据库的java程序

mysql - 我安装了 MySQL,但无法通过终端访问它

java.lang.ArithmeticException 在没有堆栈跟踪和消息的情况下抛出

c# - WCF 方法抛出 SerializationException

java - 批量执行失败后,如何重试未执行的语句?

java - 准备语句 setString 添加不必要的单引号到字符串

加入 : SELECT only if multiple rows in join match

php - 转到销售 -> 订单页面时,Magento 网站崩溃

c - 整个缓冲区初始化导致异常

mysql - 无法将变量分配给更新语句中的变量 MySQL