jdbctemplate insert into语句:无法找出错误

qqrboqgw  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(369)

我一辈子都搞不明白为什么下面的查询会返回此错误消息:

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;
 bad SQL grammar [INSERT INTO Survey (survey.PK1, survey.USERS_PK1, 
 survey.ACCREDITATION_PK1, survey.PRIVACY_TYPE_PK1, survey.EVAL_FORM_PK1,
 survey.TITLE, survey.DESCRIPTION, to_date(survey.START_DATE),
 survey.START_TIME, to_date(survey.END_DATE), survey.END_TIME,
 survey.HAS_GRADECENTER_COLUMN, survey.HAS_ANNOUNCEMENT )
VALUES(survey_SEQ.nextval,?,?,?,?,?,?,?,?,?,?,?,?)];
nested exception is java.sql.SQLSyntaxErrorException: ORA-00917: missing comma

 

String sql = "INSERT INTO UHCL_PR_survey " +
            "(" +
            "PK1, " +
            "USERS_PK1, " +
            "ACCREDITATION_PK1, " +
            "PRIVACY_TYPE_PK1, " +
            "EVAL_FORM_PK1, " +
            "TITLE, " +
            "DESCRIPTION, " +
            "to_date(START_DATE), " +
            "START_TIME, " +
            "to_date(END_DATE), " +
            "END_TIME, " +
            "HAS_GRADECENTER_COLUMN, " +
            "HAS_ANNOUNCEMENT " +
            ") " + 
            "VALUES (UHCL_PR_survey_SEQ.nextval,?,?,?,?,?,?,?,?,?,?,?,?) ";

    Object[] parameters = new Object[]{
            survey.getUsersPk1(),
            survey.getAccreditationPk1(),
            survey.getPrivacyTypePk1(),
            survey.getFormTypePk1(),
            survey.getTitle(),
            survey.getDescription(),
            new java.sql.Date(survey.getStartDate().toDate().getTime()),
            survey.getStartTimeAsUtilString(),
            new java.sql.Date(survey.getEndDate().toDate().getTime()),
            survey.getEndTimeAsUtilString(),
            survey.getGradeCenterColumn(),
            survey.getAnnouncement()
    };
this.jdbcTemplate.update(sql, parameters);
ygya80vv

ygya80vv1#

不要把 to_date 周围 START_DATE 以及 END_DATE 在您的 INSERT 声明。
首先,那部分 INSERT 语句应该只列出列的名称。我怀疑你列的名字是 START_DATE 以及 END_DATE ,表中实际上没有名为 to_date(START_DATE) 以及 to_date(END_DATE) .
其次,你不需要 TO_DATE 你生活中的任何地方 INSERT 声明。jdbc转换所有 Date 到相关dbms特定的 DATE 自动为您键入。

相关问题