当前位置: 代码迷 >> Java Web开发 >> stmt.executeQuery();空指针异常
  详细解决方案

stmt.executeQuery();空指针异常

热度:1610   发布时间:2013-02-25 21:12:29.0
stmt.executeQuery();空指针错误!
Java code
public ArrayList getMMSSingleContent(String foreignid) {        Connection conn = null;        PreparedStatement stmt = null;        ResultSet rs = null;        ArrayList<String> content = new ArrayList<String>();        try {            conn = IF_DBPool.getConnection();            if("".equals(conn)||conn==null){                log.info("conn is null!!");            }            log.info("SQL:"+DBStatement.SEND_TASK_SELECT_TBL_MMSINGLESENDContent);            stmt = conn.prepareStatement(DBStatement.SEND_TASK_SELECT_TBL_MMSINGLESENDContent);            if("".equals(stmt)||stmt==null){                log.info("stmt is null!!");            }            stmt.setString(1, foreignid);            log.info("SQL语句:select *  from tbl_MMSingleSendCONTENT mms where foreignid ='"+ foreignid + "' order by foreignID,sequence");            rs = stmt.executeQuery();            log.info("executeQuery end!!");            while (rs.next()) {                log.info("MMSCONTENT:"+rs.getString("MMSCONTENT"));                                content.add(rs.getString("MMSCONTENT"));            }            log.info("SQL end!");        } catch (Exception ex) {            log.error("fetch mmssinglecontent error:" + ex.getMessage(), ex);        } finally {            if (conn != null) {                try {                    log.info("close begin!");                    conn.close();                    log.info("close end!");                } catch (SQLException e) {                    log.error("C09 err:" + e.getMessage(), e);                }            }        }        return content;    }


因为我这边测试环境没有问题,现场有问题,所以使用现场的日志信息来判断错误原因!
日志如下:
INFO [Thread-2] [2011-10-25 13:40:47.669] (MMSFetchImp.java:363) SQL:select * from tbl_MMSingleSendCONTENT mms where foreignid = ? order by foreignID,sequence
INFO [Thread-2] [2011-10-25 13:40:47.670] (MMSFetchImp.java:371) SQL语句:select * from tbl_MMSingleSendCONTENT mms where foreignid ='111025134045381' order by foreignID,sequence
ERROR [Thread-2] [2011-10-25 13:40:47.689] (MMSFetchImp.java:382) fetch mmssinglecontent error:null
java.lang.NullPointerException
at com.ibm.db2.jcc.b.zc.a(zc.java:1234)
at com.ibm.db2.jcc.a.db.n(db.java:589)
at com.ibm.db2.jcc.a.db.j(db.java:257)
at com.ibm.db2.jcc.a.db.c(db.java:57)
at com.ibm.db2.jcc.a.r.c(r.java:42)
at com.ibm.db2.jcc.a.sb.h(sb.java:169)
at com.ibm.db2.jcc.b.zc.p(zc.java:1223)
at com.ibm.db2.jcc.b.ad.d(ad.java:2246)
at com.ibm.db2.jcc.b.ad.U(ad.java:489)
at com.ibm.db2.jcc.b.ad.executeQuery(ad.java:472)
at com.***.utils.db.PooledPreparedStatement.executeQuery(PooledPreparedStatement.java:46)
at com.***.eie.mms.core.MMSFetchImp.getMMSSingleContent(MMSFetchImp.java:373)
at com.***.eie.mms.core.MMSDealImp.transferTaskToMMSSingleMessage(MMSDealImp.java:437)
at com.***.eie.mms.core.MMSDealImp.dispatchTaskToMessage(MMSDealImp.java:80)
at com.***.eie.mms.mmsthread.MMSDealThread.run(MMSDealThread.java:37)


日志可以看出执行完这一步后就出问题了。

log.info("SQL语句:select * from tbl_MMSingleSendCONTENT mms where foreignid ='"+ foreignid + "' order by foreignID,sequence");


所以NullPointerException应该是rs = stmt.executeQuery();抛出来的.大家帮忙分析下是什么原因!

我已经做了如下判断
if("".equals(conn)||conn==null){
  log.info("conn is null!!");
}
if("".equals(stmt)||stmt==null){
  log.info("stmt is null!!");
}
从日志看,这两个参数都不为null

------解决方案--------------------------------------------------------
会不会是驱动的问题?
------解决方案--------------------------------------------------------
  相关解决方案