qinqinyamemeda 2016-08-30 02:54 采纳率: 0%
浏览 1444
已采纳

空指针异常我怎么也找不出问题

java.lang.NullPointerException
com.eshore.dao.ProductDaoImpl.findAll(ProductDaoImpl.java:33)
com.eshore.service.ProductService.findAll(ProductService.java:36)
org.apache.jsp.product_005flist2_jsp._jspService(product_005flist2_jsp.java:101)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

我是查询语句,JSP JDBC连接MYsql的,用DAO模式,
下面是报错里面这两句有问题的话的出处:

第一句:com.eshore.dao.ProductDaoImpl.findAll(ProductDaoImpl.java:33)
public List findAll(String product_name) throws Exception{
List list = new ArrayList();
String sql = "select product_id,product_name,price,info from product";
if(product_name!=null&&!"".equals(product_name)){
sql = "select product_id,product_name,price,info from product where product_name like? ";
this.pstmt.setString(1,"%" + product_name + "%");

        }
        else {
            this.pstmt = this.conn.prepareStatement(sql);
        }
     ResultSet rs = this.pstmt.executeQuery();
     Product product = null;
        while (rs.next()){
            product = new Product();
            product.setProduct_id(rs.getString(1));
            product.setProduct_name(rs.getString(2));
            product.setPrice(rs.getDouble(3));
            product.setInfo(rs.getString(4));
            list.add(product);
        }
     this.pstmt.close();
     return list;
 }

 标的是:this.pstmt.setString(1,"%" + product_name + "%");这句




 第二句:com.eshore.service.ProductService.findAll(ProductService.java:36)

public List findAll(String product_name) throws Exception{
List list = null;

    try{ 
        list = this.dao.findAll(product_name);
    }
    catch (Exception e){
        throw e;
    }
    finally {
        this.dbconn.close();
    }

    return list;
}

是里面的:list = this.dao.findAll(product_name);


在第二处可疑错中,我开始想是不是product_name是不是没判断非空,
加了if(product_name!=null&&!"".equals(product_name)){


变成:       try{ if(product_name!=null&&!"".equals(product_name)){
        list = this.dao.findAll(product_name);
    }}

什么的还是报这个错:
java.lang.NullPointerException
com.eshore.dao.ProductDaoImpl.findAll(ProductDaoImpl.java:33)
com.eshore.service.ProductService.findAll(ProductService.java:36)
  • 写回答

9条回答 默认 最新

  • Carrie丶 2016-08-30 04:03
    关注

    if(product_name!=null&&!"".equals(product_name)){
    sql = "select product_id,product_name,price,info from product where product_name like? ";
    this.pstmt.setString(1,"%" + product_name + "%");
    }
    else {
    this.pstmt = this.conn.prepareStatement(sql);
    }
    product_name不是空的时候 this.pstmt 没设置值??是空的吗,你else里设置了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 使用canvas生成26个英文字母
  • ¥15 请教一个关于镜头标定,棋盘格格子大小的问题(畸变测试)
  • ¥15 el-table输入多维数组怎么实现
  • ¥15 安装GroudingDINO RuntimeError: Error compiling objects for extension
  • ¥15 关于推送项目到github的问题
  • ¥15 急!C++指针编写相关的问题
  • ¥15 kerberos身份认证配置问题
  • ¥30 用python写一个多签情况下波场的代理资源和回收资源
  • ¥15 怎么在matlab中输出显示泵的流量-扬程和管路损失与流量均在一个表格里
  • ¥15 matlab学期例题代码答疑