0

我有以下 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 (?... ) 格式。

有人有想法么?

4

1 回答 1

1

HOUR DB2 中的保留字。清单在这里

您应该"在列列表中用双引号 ( ) 将其括起来。

TABLE也是保留字。不过,我假设您在那里有一个真实的表名。

于 2013-07-17T21:09:43.170 回答