0

準備済みステートメントに設定されているオブジェクトのリストがあります。リストにタイムスタンプ値があるため、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
  );

どんな入力でも大歓迎です

ありがとう

4

0 に答える 0