Java语法错误,在SQL编辑器中工作正常

时间:2013-07-17 20:53:02

标签: java sql jdbc db2

我有以下java代码从传入的连接创建一个预准备语句。这只是代码的一部分,我已经更改了匿名的表名。

private static final String preparedStatementSQL = "INSERT INTO TABLE (STORE_ID,"
        + "BRAND_NAME,BUSINESS_DATE,HOUR,FCST_SYSSLS_AMT,FCST_USERSLS_AMT,FCST_SYSTRN_CNT,"
        + "FCST_USERTRN_CNT,ACTION_TIMESTAMP) VALUES (?,?,?,?,?,?,?,?,(current timestamp))";

private PreparedStatement ps = null;

public TABLE(Connection con) throws SQLException{
    this.ps = con.prepareStatement(preparedStatementSQL);
}

当它运行以下行时:

this.ps = con.prepareStatement(preparedStatementSQL);

我收到以下SQL错误:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "HOUR" at line 1, column 67.

我将语句复制到我的SQL编辑器(SQuirreL)并输入了一些组成的值,并且工作正常(没有语法错误!)。

它是IBM DB2数据库。

我尝试删除列名称:

INSERT INTO TABLE VALUES (?,?,?,?,?,?,?,?,(current timestamp))

它修复了问题,但我必须使用(COLUMNS)VALUES(?...)格式。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

HOUR DB2中的保留字。列表为here

你应该在列列表中加上双引号(")。

TABLE也是一个保留字。我假设你有一个真正的表名。