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