在PostgreSQL中插入查询

时间:2015-02-19 13:58:45

标签: postgresql

我是新手使用PostgreSQL,我尝试从spring jdbc插入值。 这是我的查询

private static final String ADD_SELLER = "INSERT INTO SELLER(SELLER_ID, FIRST_NAME, LAST_NAME, TIN_NO, COMPANY_NAME, COMPANY_LOGO, EPCH_NO, VAT_NO, CST_NO, COMMISSION, STATUS, APPROVED, CREATED_DTTM) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)";

我的代码如下

public void addSeller(SellerDO sellerDO)throws UserDataException {
    JdbcTemplate jdbcTemplate = this.getJdbctemplate();
    long sellerId = jdbcTemplate.queryForObject(ADD_SELLER, Long.class);
    sellerDO.setSellerId(sellerId);
    int isSellerAdded = jdbcTemplate.update(ADD_SELLER, new Object[]{sellerId, sellerDO.getFirstName(), sellerDO.getLastName(), sellerDO.getTin_no(), sellerDO.getCompanyName(), sellerDO.getCompanyLogo(), sellerDO.getEpch_no(), sellerDO.getVat_no(), sellerDO.getCst_no(), sellerDO.getCommission(), sellerDO.getStatus(), sellerDO.getApproved()});
    try {
        if(isSellerAdded == 0){
            log.info("Seller registration failed");
        }
    } catch (DataAccessException dataAccessException) {
        throw new UserDataException("Seller registration failed", dataAccessException);
    }
}

当我执行上述方法的测试用例时,我收到错误

  

org.springframework.jdbc.BadSqlGrammarException:StatementCallback;错误的SQL语法[INSERT INTO SELLER(SELLER_ID,FIRST_NAME,LAST_NAME,TIN_NO,COMPANY_NAME,COMPANY_LOGO,EPCH_NO,VAT_NO,CST_NO,COMMISSION,STATUS,APPROVED,CREATED_DTTM)VALUES(?,?,?,?,?,?,?, ?,?,?,?,?,CURRENT_TIMESTAMP)];嵌套异常是org.postgresql.util.PSQLException:错误:语法错误在或附近","

这是上下文配置

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <constructor-arg ref="dataSource" />
</bean>

<bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.postgresql.Driver" />
    <property name="url" value="jdbc:postgresql://localhost:5432/xxxx" />
    <property name="username" value="postgres" />
    <property name="password" value="xxxxx" />
</bean>

1 个答案:

答案 0 :(得分:0)

我没有看到在字符串变量本身中使用current_timestamp的原因。您可能想要将timestamp元素替换为?在ADD_SELLER变量中,并使用CURRENT_TIMESTAMP作为jdbcTemplate.update(..)调用中的参数。