2011-03-03 24 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