2014-04-01 24 views
0
String sql="select * from matrix where metric_name in(?)"; 
PreparedStatement st1 = conn.prepareStatement(sql); 
st1.setString(1,"NO_OF_ORDERS"); 
resultSet = st1.executeQuery(sql); 
while (resultSet.next()) { 
} 

簡單查詢相同的查詢正常工作與MySQL 5.7,但我無法找到問題。 如何傳遞參數在MySQL 5.5從JDBC我想通過參數與MySQL 5.5通過jdbc代碼

錯誤是: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「?)」在1號線

+0

你會得到什麼錯誤? – kostya

+0

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:您的SQL語法有錯誤;請檢查與您的MySQL服務器版本相對應的手冊,在第1行的'?)'旁邊使用正確的語法 – user2582889

回答

0

你不應該在一個PreparedStatementexecuteQuery(String),你應該叫executeQuery()來代替。這是JDBC api明確禁止的,但是偶然會出錯(由於語法錯誤)與MySQL Connector/J。

注意,目前的查詢是等價的:

select * from matrix where metric_name = ? 

我不明白了一個道理,爲什麼你會使用IN這裏。