org.springframework.jdbc.BadSqlGrammarException:PreparedStatementCallback;

时间:2018-09-07 12:14:32

标签: java jdbc spring-jdbc

我正在使用Jdbc模板将记录插入数据库。下面是导致错误的sql语句。

INSERT INTO table_name(PDDID, APPLICATION_CODE, STATUS,CREATED_TS) VALUES ( ?,?,?,SYSTIMESTAMP)

详细信息是:

PreparedStatementCallback; bad SQL grammar [

                    INSERT INTO table_name(PDDID, APPLICATION_CODE, STATUS,CREATED_TS) VALUES ( ?,?,?,SYSTIMESTAMP)

        ]
  

org.springframework.jdbc.BadSqlGrammarException:   PreparedStatementCallback;错误的SQL语法[INSERT INTO table_name   (PDDID,APPLICATION_CODE,STATUS,CREATED_TS)VALUES(   ?,?,?,SYSTIMESTAMP)];嵌套异常为   java.sql.SQLSyntaxErrorException:ORA-00904:“ PDDID”:无效   标识符

3 个答案:

答案 0 :(得分:0)

检查列名“ PDDID”是否正确。 将有效值替换为“?”后,是否可以尝试直接在数据库客户端上运行此语句。

答案 1 :(得分:0)

尝试重命名您的pddid字段或使用“ pddid”,可能与SQL pid冲突。

答案 2 :(得分:0)

我认为您必须输入一个有效的列名,因为它要么丢失,要么输入的列无效。当您在select语句中引用无效别名时,最常见的是“无效标识符”。 Oracle文档在ORA-00904错误上对此进行了说明:

ORA-00904字符串:无效的标识符

原因:输入的列名丢失或无效。

输入有效的列名。有效的列名称必须以字母开头,且小于或等于30个字符,并且仅由字母数字字符和特殊字符$,_和#组成。

如果包含其他字符,则必须将其用双引号引起来。它可能不是保留字。 为避免ORA-00904,列名不能为保留字,并且必须包含以下四个条件才能有效:

以字母开头 小于或等于三十个字符 仅由字母数字和特殊字符($ _#)组成;其他字符需要用双引号引起来。