2009-01-20 48 views
1

我想下面String传递给PreparedStatement时:SQL异常试图让一个准备好的声明

private static final String QUICK_SEARCH = "select * from c where NAME like '% ? %'"; 

不过,我得到一个SQL异常绑定变量缺失。

有什么建议吗?

+0

我们可以看到您用于创建准备好的语句的实际代码吗? – SCdF 2009-01-20 11:37:45

+0

[Java PreparedStatements中的通配符]的可能重复(http://stackoverflow.com/questions/327765/wildcards-in-java-preparedstatements) – outis 2012-04-27 19:49:26

回答

1

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

1

你不能把绑定变量放在这样的字符串中。

您需要使用:

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

或相似的,这取决于哪些功能是由您的SQL版本的支持。

1

cool,

我刚刚在设置preparedstatement时设置了%符号;

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