2011-03-03 29 views
3
的準備語句

我正在使用PreparedStatement查詢我的表。不幸的是,我一直無法這樣做。Java不會運行參數爲

我的代碼是如此簡單:

PreparedStatement preparedStatement = connection.prepareStatement(
"Select favoritefood from favoritefoods where catname = ?"); 

preparedStatement.setString(1, "Cappuccino");     
ResultSet resultSet = preparedStatement.executeQuery(); 

拋出的錯誤是java.sql.SQLException: ORA-00911: invalid character。就好像它永遠不會運行給定的參數。

謝謝你的時間。我花了一天的時間來調試,但仍然不成功。

正如Piyush提到的,如果我在語句結尾處省略分號,會引發新的錯誤。 java.sql.SQLException: ORA-00942: table or view does not exist。但我可以向你保證這張桌子確實存在。

UPDATE

拍攝。我編輯了錯誤的sql。現在它成功了。 thx爲你的時間。

回答

2

如果您嘗試從顯示的sql中綁定值並從SQL提示符或任何SQL編輯器執行它,是否會出現此錯誤? 確保您的查詢在其末尾或查詢中的任何位置沒有分號(「;」)。

+0

我可以直接對蟾蜍運行的聲明,並得到了結果。它似乎只是java不替代參數。它將完整地執行帶有問號的代碼。 – 2011-03-03 06:53:08

+2

@Piyush我更新了我的代碼。在最後省略分號後,拋出新的錯誤。 – 2011-03-03 07:09:15

+1

你可以在這裏發佈相關的JDBC代碼嗎?您可能從JDBC連接到錯誤的數據庫 - 請檢查該數據庫。此外,嘗試schemaName.tableName像選擇。從favoritefoodsfavoritefood – 2011-03-03 07:17:51

0

嘗試給它這樣..

String query="Select favoritefood from favoritefoods where catname = ?"; 
preStat = conn.preparedStatement(query); // conn is the connection object 
preStat.setString(1,"Cappuccino"); 
ResultSet resultSet=preStat.executeQuery(); 
+2

你只是將sql保存在單獨的變量中嗎?我已經完成了這個,發生了同樣的錯誤。 – 2011-03-03 07:02:23