为什么我在这个准备好的语句中出现语法错误?

时间:2012-05-24 14:23:28

标签: prepared-statement derby

我正在尝试学习如何执行PreparedStatement,如下所示:

createConnection();
conn.setAutoCommit(false);
String sql = "SELECT MAX(?) FROM ?";
PreparedStatement stmt = conn.prepareStatement(sql);

然而,当我点击最后一行时,它会抛出java.sql.SQLSyntaxErrorException,如下所示:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "?" at line 1, column 20.

我到处搜索,但找不到任何理由让它失败。我究竟做错了什么?稍后在我设置的代码中?参数表示完整的字符串值,但是当我调试时,我从未达到过这一点。它命中这个conn.prepareStatement行并抛出异常。谢谢您的帮助。我不知道它是否有所作为,但它是在德比数据库中。

1 个答案:

答案 0 :(得分:1)

想想你的?标记为sql变量。你不能对变量做一个选择MAX,它在语法上是不正确的。

您无法执行以下操作:

declare @myvar int
select @myvar = 1

SELECT MAX(@myvar) from SomeTable