public List<VideoAlarmBean> getAllBystrs(String startTime, String endTime,
String str) {
Connection conn = super.getConnection();
CallableStatement cs = null;
ResultSet rs = null;
VideoAlarmBean videoAlarm = null;
List<VideoAlarmBean> list = new ArrayList<VideoAlarmBean>();
try {
cs = conn.prepareCall("{call sp_select_all_videoalarm(?,?,?)}");
cs.setString(1, startTime);
cs.setString(2, endTime);
cs.setString(3, str);
boolean b = false;
b = cs.execute();
while (b) {
rs = cs.getResultSet();
while (rs.next() && rs != null) {
videoAlarm = new VideoAlarmBean();
// 数据处理
videoAlarm.setMediatype(rs.getInt("mediatype"));
videoAlarm.setTimestamp(rs.getLong("timestamp"));
videoAlarm.setMonitor_id(rs.getInt("monitor_id"));
videoAlarm.setSrc_ip(rs.getString("src_ip"));
videoAlarm.setSrc_port(rs.getInt("src_port"));
videoAlarm.setDst_ip(rs.getString("dst_ip"));
videoAlarm.setDst_port(rs.getInt("dst_port"));
videoAlarm.setAlarm_type(rs.getInt("alarm_type"));
videoAlarm.setAlarm_value(rs.getDouble("alarm_value"));
videoAlarm.setAlarm_level(rs.getInt("alarm_level"));
Date date1 = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date1.setTime(rs.getLong("timestamp") / 1000);
videoAlarm.setStarttime(df.format(date1));
// 中文处理
try {
videoAlarm.setMonitor_name(URLEncoder.encode(rs
.getString("monitor_name"), "UTF-8"));
} catch (UnsupportedEncodingException e) {
log.error("错误信息:" + e.getMessage());
}
list.add(videoAlarm);
}
b = cs.getMoreResults();
}
} catch (SQLException e) {
log.error("错误信息:" + e.getMessage());
} finally {
try {
rs.close();
cs.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}每当执行到b = cs.execute();这句是就报我的sql有错误,可是我拿一模一样的参数在数据库上执行就没问题,求助各位给分析下,可能是什么原因。谢谢!

解决方案 »

  1.   

    2010-11-20 17:15:03,156 ERROR [com.ewanit.imts.dao.index.impl.VideoAlarmDaoSearchImpl] - 错误信息:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1
    2010-11-20 17:15:05,562 WARN [org.apache.struts.action.RequestProcessor] - Unhandled Exception thrown: class java.lang.NullPointerException
    javax.servlet.ServletException: java.lang.NullPointerException
    at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at com.ewanit.imts.util.ServletUtils.process(ServletUtils.java:20)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.NullPointerException
    at com.ewanit.imts.dao.index.impl.VideoAlarmDaoSearchImpl.getAllBystrs(VideoAlarmDaoSearchImpl.java:167)
    at com.ewanit.imts.service.index.impl.VideoAlarmServiceSearchImpl.getAllBystrs(VideoAlarmServiceSearchImpl.java:40)
    at com.ewanit.imts.web.struts.index.action.VideoAction.alarm_voice(VideoAction.java:350)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    ... 18 more
      

  2.   

    相同的参数,在数据库册直接调用存储过程会给出结果集,那个空指针的问题应该是rs=null,程序没执行rs=cs.getResultSet();这句导致的,问题还出在call sp上