2013-06-26 10 views
2

我试图在JDBC数据库上运行以下SQL数据库。JDBC SQL异常:查询在MySQL提示符下正确执行,但在java中给出错误

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.newInstance0(本机方法) 线1 在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在java.lang.reflect.Constructor.newInstance(Constructor.java:525)

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

回答

3

这就是问题所在:

ResultSet rs = pStatement.executeQuery(selectQuery); 

您使用的executeQuery错误的过载 - 这是一个由Statement声明。你想要通过PreparedStatement推出的。你已经准备好了SQL,然后设置参数 - 你只想:

ResultSet rs = pStatement.executeQuery(); 
+0

非常感谢你。 – user2524652

相关问题