将对象转换为SQL TIMESTAMP抛出java.sql.SQLDataException:ORA-01858

时间:2012-10-23 05:27:53

标签: java timestamp prepared-statement

我有一个对象列表,它们被设置为预备语句。我在列表中有一个时间戳值,因此检查instanceOf条件和preparedStatement.setTimestamp来设置值,但它正在抛出java.sql.SQLDataException: ORA-01858 a non-numeric character was found where a numeric was expected。明确的投射是一个问题吗?

我的代码

int count = 1;
for (int j = 0; j < list.size(); j++) {
    logger.info("column: "+count+ " value: "+list.get(j));
    if(list.get(j) instanceof Timestamp) {
          ps.setTimestamp(count,  (Timestamp) list.get(j));     
    } else {
         ps.setObject(count, list.get(j));
    }
    count++;

}

准备好的声明

insert  into OPRS_ZONES(ZONE_ID,ZONE_CODE,ZONE_NAME,PLACE_ID,CORP_ID,CREATED_BY,CREATED_DATE,MODIFIED_BY,MODIFIED_DATE) values(?,?,?,?,?,?,?,?,?)

column: 1 value: 03.0
column: 2 value: 'HYDERABAD'
column: 3 value: 'HYDERABAD'
column: 4 value: 05231.0
column: 5 value: 01.0
column: 6 value: 01.0
column: 7 value: 2012-10-19 13:06:39.0
column: 8 value: 00.0
column: 9 value: NULL

我需要插入值

的表格结构
CREATE TABLE OPRS_ZONES (
    ZONE_ID             NUMERIC(20,0)
    , ZONE_CODE         VARCHAR2(16)
    , ZONE_NAME         VARCHAR2(255)
    , PLACE_ID          NUMERIC(20,0)
    , CORP_ID           NUMERIC(20,0)
    , CREATED_BY        NUMERIC(20,0)
    , CREATED_DATE      DATE
    , MODIFIED_BY       NUMERIC(20,0)
    , MODIFIED_DATE     DATE
  );

赞赏任何输入

由于

0 个答案:

没有答案