报错涉及到的代码:
try {
final String date = (String) jdbcTemplate.queryForObject("SELECT to_char(SYSDATE,'YYYYMMDDhh24:mi:ss') FROM DUAL",String.class);
final long SEQ_ID = jdbcTemplate.queryForLong("SELECT SEQ_LOG_ID.NEXTVAL SEQ FROM dual");
jdbcTemplate.execute(
"INSERT INTO dat_import(file_id, importtime, Datatime, check_user, check_time, File_Text,UPLOAD_USER,SEQ_ID," +
"FILE_NAME)VALUES(?,to_date(?, 'YYYYMMDDhh24:mi:ss'),?,'','',?,?,?,?)",
new AbstractLobCreatingPreparedStatementCallback(lobHandler) {
protected void setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException, DataAccessException {
ps.setString(1,_FILE_ID);
ps.setString(2,date);
ps.setString(3,_DATATIME);
lobCreator.setBlobAsBinaryStream(ps, 4, is, (int)_FILE_TEXT.getSize());
ps.setString(5,_userId);
ps.setLong(6,SEQ_ID);
ps.setString(7,_FILE_NAME);
}
}
);
String sql = "";
final DBFReader reader = new DBFReader(iis);
sql = "DELETE FROM dat_invest_ability_tmp t WHERE t.seq_id IN (SELECT d.seq_id FROM dat_import d " +
"WHERE d.datatime = '" + DATATIME + "' AND d.file_id ='" + FILE_ID + "')";
System.out.println("Delete dbf_tmp data=>"+sql);
jdbcTemplate.execute(sql);
for (int j = 0; j < reader.getRecordCount(); j++) {
sql = "insert into dat_invest_ability_tmp values(to_date('" + date + "', 'YYYYMMDDhh24:mi:ss'),'" + SEQ_ID + "',?,";
sql += "?,";
for (int i = 0; i < reader.getFieldCount(); i++) {
if (i!=reader.getFieldCount()-1)
sql += "?,";
else
sql += "?)";
}
jdbcTemplate.batchUpdate(sql,new BatchPreparedStatementSetter(){
public void setValues(PreparedStatement ps,int i) throws SQLException{
Object aobj[];
DBFField dbffield = new DBFField();
long RefId = 0;
try {
RefId = jdbcTemplate.queryForLong("SELECT SEQ_REFID.NEXTVAL SEQ FROM dual");
ps.setLong(1,RefId);
ps.setString(4,"");
aobj = reader.nextRecord();
for (int j = 0; j < reader.getFieldCount(); j++) {
dbffield = reader.getField(j);
if(j < 2)
ps.setString((j+2),getValue(dbffield, aobj[j]));
else
ps.setString((j+3),getValue(dbffield, aobj[j]));
}
} catch (DBFException e) {
e.printStackTrace();
}
}
public int getBatchSize(){
return 1;//reader.getRecordCount() + 2;
}
});
jdbcTemplate.update("INSERT INTO Sys_Deal_Opdetail_Log(REFID, OP_TIME, OP_CONTENTS)" +
" VALUES('" + logRefId + "',to_char(SYSDATE, 'YYYYMMDDhh24miss'),'数据上载')");
}catch (Exception e1) {
transactionManager.rollback(status);
e1.printStackTrace();
msg.put("info","解析文件出错!" + e1.getMessage());
msg.put("URL",URL);
msg.put("flag","1");
return new ModelAndView(this.infoPage,"msg",msg);
}
报错信息是:
[09-5-12 14:19:24:227 CST] 0000002c SystemErr R java.lang.NullPointerException
at oracle.jdbc.driver.T4C8Oall.getNumRows(T4C8Oall.java:876)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:972)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3423)
at org.springframework.jdbc.core.support.AbstractLobCreatingPreparedStatementCallback.doInPreparedStatement(AbstractLobCreatingPreparedStatementCallback.java:71)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:499)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java(Inlined Compiled Code))
at com.icbc.param.servlet.LobController.addDatImportBlob(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:434)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:372)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:806)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:736)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:360)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1572)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:762)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:89)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1936)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:114)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:472)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:411)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:101)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java(Compiled Code))
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code))
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java(Compiled Code))
at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java(Compiled Code))
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
前台抛“解析文件出错!null”信息,后台日志如上,查了好长时间,没找到原因,大家帮忙看下啊,谢了。。