【发布时间】:2013-07-17 20:53:01
【问题描述】:
我有以下 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 (?...) 格式。
有人有什么想法吗?
【问题讨论】:
-
HOUR可能是一个保留字,在您的字符串常量中尝试\"HOUR\"。顺便说一句:current_timestamp不需要括号。