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注入攻击。