You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Web项目调用JDBC查询方法抛出java.lang.NullPointerException求解

空指针异常原因排查

核心触发原因

  • 你的GameDao.getGamingByName方法存在致命逻辑错误:方法内你已经创建了List<Gaming> gaming集合存储查询结果,但是方法最后固定返回null,而不是返回组装好的gaming集合。当页面调用该方法获取列表后直接进行for-each遍历,对null执行迭代操作必然触发空指针异常。

其他可能触发空指针的风险点

  • JDBC连接获取失败时connection为null,后续执行connection.prepareStatement(sql)会直接抛出空指针异常。
  • 跳转至编辑页面的请求没有携带TenSanPham参数时,request.getParameter("TenSanPham")返回null,后续查询、字段赋值逻辑都可能触发空指针。
  • 若数据库中对应字段存在null值,调用rs.getString返回null后直接赋值给Gaming对象的属性,后续前端读取属性时也可能触发空指针。

修复方案

  1. 修正getGamingByName方法的返回值:
    将方法末尾的return null;修改为return gaming;,即使没有查询到数据也会返回空集合,不会触发遍历空指针。
  2. 增加非空校验逻辑
  • 获取JDBC连接后先判断是否为null,如果连接为空直接返回空集合并打印错误日志。
  • 编辑页获取TenSanPham参数、gamings列表后先做非空判断,为空时跳转到错误页或者列表页,不执行后续遍历逻辑。
  1. 可选优化:因为TENSANPHAM是主键,最多返回1条记录,可以将getGamingByName方法的返回值修改为单个Gaming对象,不用返回集合,减少遍历逻辑的出错概率。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:03:01