【发布时间】:2010-05-11 15:24:39
【问题描述】:
我有以下 Java 代码:
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 的位置)抛出异常:
错误 0221202:SQLException = com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 '? 附近使用的正确语法。和年龄=?在第 1 行有人对我做错了什么有任何建议吗?谢谢!
【问题讨论】:
-
你是否与变量
conn建立了连接? -
myTable中有哪些列?真的有一个叫1吗?如果要选择所有列但只选择一行,则为SELECT * FROM myTable WHERE name=? AND age=? LIMIT 1; -
很好地了解列被命名为“1”。没有名为“1”的列,而是名为生日的列。我现在已将查询更改为“从 myTable 中选择生日,其中 name = ? and age = ?”但同样的错误信息仍然存在。有名为“name”和“age”的列具有适当的数据类型(字符串和 int)。
-
从“选择 1”更改为“选择生日”后,我注意到错误移至我的 executeQuery() 语句。我的实际示例更复杂,它在 PreparedStatement 上循环而不调用 clearParameters。所以这个问题现在已经解决了。 :)
标签: java mysql prepared-statement