我正在尝试学习如何执行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行并抛出异常。谢谢您的帮助。我不知道它是否有所作为,但它是在德比数据库中。
答案 0 :(得分:1)
想想你的?标记为sql变量。你不能对变量做一个选择MAX,它在语法上是不正确的。
您无法执行以下操作:
declare @myvar int
select @myvar = 1
SELECT MAX(@myvar) from SomeTable