3

我正在尝试使用 JDBC 在 MySQL 数据库上运行以下 SQL。

String selectQuery = "SELECT IFNULL(MAX(list_id), 0)+1 AS 'max_list_id' FROM UserHospitalLists WHERE user_id=?";

pStatement = connection.prepareStatement(selectQuery);
pStatement.setInt(1, 59);
ResultSet rs = pStatement.executeQuery(selectQuery);
while (rs.next()) {
     maxListId = rs.getString("max_list_id");
}

并得到以下错误。

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在“?”附近使用的正确语法 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 处 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 处的第 1 行处,位于 java.lang 处 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 处。 reflect.Constructor.newInstance(Constructor.java:525)

查询在 MySQL 提示符下正确执行。可能是什么问题?

4

1 回答 1

3

这就是问题:

ResultSet rs = pStatement.executeQuery(selectQuery);

您使用了错误的重载executeQuery- 它是由Statement. 您想要由 介绍的那个PreparedStatement。你已经用 SQL 准备好了,然后设置参数——你只需要:

ResultSet rs = pStatement.executeQuery();
于 2013-06-26T15:06:35.220 回答