Java 尝试生成准备好的语句时发生SQL异常

Java 尝试生成准备好的语句时发生SQL异常,java,sql,Java,Sql,我正在尝试将以下字符串传递给PreparedStatement: private static final String QUICK_SEARCH = "select * from c where NAME like '% ? %'"; 但是,我得到一个SQL异常,绑定变量丢失 有什么建议吗?不能将绑定变量放在那样的字符串中 您需要使用: SELECT * FROM c WHERE name LIKE CONCAT('%', ?, '%') 或者类似的,这取决于您的SQL版本支持哪些函数。您

我正在尝试将以下
字符串
传递给
PreparedStatement

private static final String QUICK_SEARCH = "select * from c where NAME like '% ? %'";
但是,我得到一个SQL异常,绑定变量丢失


有什么建议吗?

不能将绑定变量放在那样的字符串中

您需要使用:

SELECT * FROM c WHERE name LIKE CONCAT('%', ?, '%')

或者类似的,这取决于您的SQL版本支持哪些函数。

您不能使用字符串连接中的参数吗?

很酷

我在设置preparedstatement时只设置了%符号

pstmt.setString(1, "%" + name + "%");

我们可以看到您用于创建此准备好的语句的实际代码吗?请小心可能的重复代码。这可能导致SQL注入攻击。