2009-01-20 44 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 + "%");