我想在我的表格列“updatedDate”中插入日期,其中日期为列数据类型。我使用spring jdbctemplate进行数据持久化。我尝试将列值传递为 java.util.Date,java.sql.Date以及java.sql.Timestamp, ,但它们都不起作用。我收到以下错误:
java.sql.SQLDataException:ORA-01858:找到了数字所在的非数字字符
下面是我的插入代码。
public void insert(
Hashtable<String, UploadError> errorCollection) {
try {
Set<String> keys = errorCollection.keySet();
for (String key : keys) {
UploadError contractUploadVO = errorCollection.get(key);
String contract_error_sql = "insert into TARIFF_LOG("
+ "ERR_MSG, JOB_ID, CRTD_DTT, CRTD_BY, Regn, UPDT_BY, UPDT_DTT) "
+ "values(:errorMsg, :jobId, :createdDate, :createUser, :region, :updatedBy, :updatedDate)";
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("errorMsg", contractUploadVO.getErrMsgSearch());
paramMap.put("jobId", contractUploadVO.getJobIDSearch());
paramMap.put("createUser", contractUploadVO.getCreatedByUser());
paramMap.put("createdDate", "SYSDATE");
paramMap.put("region", contractUploadVO.getRegion());
paramMap.put("updatedBy", contractUploadVO.getUpdatedByUser());
paramMap.put("updatedDate", new java.sql.Date(contractUploadVO.getUpdatedDate().getTime()));
getNamedJdbcTemplate().update(contract_error_sql, paramMap);
}
} catch (Exception e) {
Logger.getInstance().fatalEvent(getClass(),"insert", e.getMessage(), e);
}
}
如果我在updatedDate中传递“SYSDATE”而不是“new java.sql.Date(contractUploadVO.getUpdatedDate()。getTime())”,那么它的工作正常。
请帮帮我,为什么我得到ORA-01858:发现非数字字符错误?