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

JDBC连接MySQL失败 调用prepareStatement因con为空报空指针异常

错误根因说明

你遇到的空指针异常核心是getConnection()方法执行失败返回了null,代码未做非空校验直接调用con.prepareStatement()触发报错,可能的具体原因如下:


一、数据库连接层面错误

  • MySQL服务未正常运行:检查本地3306端口的MySQL服务是否已启动,服务未开启会直接拒绝连接请求
  • 连接参数配置错误:
    • 确认root用户的实际密码是否为1234,密码错误会触发连接权限校验失败
    • 确认hospitalm数据库已成功创建,库名拼写错误会导致找不到目标库
    • 若你使用的是MySQL 8.0+版本,驱动类全限定名应为com.mysql.cj.jdbc.Driver,你当前配置的com.mysql.jdbc.Driver是MySQL 5.x版本的驱动,版本不匹配会导致驱动加载失败
    • MySQL 8.0+版本需要在JDBC URL补充时区等必要参数,修正后的URL应为:jdbc:mysql://localhost:3306/hospitalm?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true,缺少参数会直接触发连接异常
  • 驱动依赖缺失:检查项目是否引入了对应版本的mysql-connector-java依赖包,未引入依赖会导致Class.forName加载驱动失败,无法建立连接

二、代码逻辑缺陷

  • 获取连接后未做非空校验:你拿到Connection对象后没有判断是否为null就直接调用方法,一旦连接获取失败就会触发空指针,建议补充非空判断逻辑,连接为空时直接返回错误提示即可
  • 插入数据时未显式指定表字段:你的插入SQL写法insert into hospitalm.patient values(?, ?, ?, ?, ?)依赖表字段的创建顺序,建议修改为insert into hospitalm.patient(pid,pname,address,email_id,ptype) values(?, ?, ?, ?, ?),避免表结构调整后参数顺序错位

三、SQL表结构错误

你提供的建表语句存在拼写错误:PRMARY KEY(pid) 应为 PRIMARY KEY(pid),如果建表时未修正该错误,会导致patient表创建失败,插入数据时触发表不存在的异常,进而导致连接操作失败。


快速定位方案

你可以在getConnection()方法的SQLException捕获块中增加日志打印:System.out.println("连接失败原因:"+e.getMessage());,通过具体的异常信息就能快速定位具体故障点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:15:04