2010-05-11 47 views
1

我有以下的Java代碼:的PreparedStatement拋出MySQLSyntaxErrorException

String query = "Select 1 from myTable where name = ? and age = ?"; 
PreparedStatement stmt = conn.prepareStatement(query); 
stmt.setString(1, name); 
stmt.setInt(2, age); 
ResultSet rs = stmt.executeQuery(); 

每當我運行上面的代碼,它拋出一個異常上線2(其中PreparedStatement的聲明):

 
Error 0221202: SQLException = com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? AND age = ?' at line 1

不任何人有什麼建議我做錯了什麼?謝謝!

+0

你是否用變量'conn'建立了連接? – 2010-05-11 15:29:32

+0

是,conn!= null。 – sqlBugs 2010-05-11 15:30:53

+0

'myTable'中的列是什麼?真的有一個名爲'1'嗎?如果你想選擇所有的列,但只有一行,它是'SELECT * FROM myTable WHERE name =? AND年齡=? LIMIT 1;' – 2010-05-11 15:30:59

回答

1

你可以試試這個

String query = "Select count(*) from myTable where `name` = ? and age = ?"; 

反正你的代碼工作完美的我;
你確定你的字符串中沒有特殊字符嗎?
什麼是正在使用的MySQL和驅動程序版本?
這是正確的代碼?

-2

看起來像PreparedStatement類只支持SQL「IN」參數化列表。看起來像你想改變它使用prepareCall函數:

CallableStatement stmt = conn.prepareCall(query); 

而且CallableStatement擴展PreparedStatement所以它真的很容易做出改變。

+0

請不要打擊報復時人們downvote。相反,請嘗試根據您可用的信息(例如高評分答案)來改進您的答案。 – Zenexer 2013-08-14 00:30:47

相關問題