【问题标题】:Why am i getting a syntax error with this prepared statement?为什么这个准备好的语句出现语法错误?
【发布时间】:2012-05-24 14:23:27
【问题描述】:

我正在尝试学习如何执行 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 行并抛出异常。谢谢您的帮助。我不知道它是否有区别,但它在 derby 数据库中。

【问题讨论】:

    标签: prepared-statement derby


    【解决方案1】:

    想你的?标记为 sql 变量。您不能对变量执行 select MAX,它在语法上不正确。

    您不能执行以下操作:

    declare @myvar int
    select @myvar = 1
    
    SELECT MAX(@myvar) from SomeTable
    

    【讨论】:

    • 这是有道理的。非常感谢您的帮助! :)
    猜你喜欢
    • 1970-01-01
    • 2014-06-18
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    相关资源
    最近更新 更多