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

初学者求助:java.lang.NullPointerException异常(无法调用Connection.createStatement())

解决java.lang.NullPointerException: Cannot invoke "java.sql.Connection.createStatement()"

异常本质

这个异常的核心是:你调用createStatement()时,所用的Connection数据库连接对象是null——也就是说你还没成功创建或获取到有效的数据库连接,就直接调用了它的方法。

排查与修复步骤

1. 检查连接获取代码的有效性

先定位到你获取Connection的代码段(比如用DriverManager.getConnection()或数据源获取的部分),确认这部分是否正常返回了有效连接:

// 错误示例:未处理连接失败的情况,conn可能保持null
Connection conn = null;
try {
    Class.forName("com.mysql.cj.jdbc.Driver");
    // 若URL、用户名、密码错误,会抛出SQLException,conn仍为null
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "user", "pass");
} catch (ClassNotFoundException | SQLException e) {
    // 仅打印日志不处理,conn会维持null状态
    e.printStackTrace();
}
// 此时conn为null,调用createStatement()必抛异常
Statement stmt = conn.createStatement();

2. 确保连接有效后再执行方法

必须在确认Connection不为null后,再调用createStatement(),同时正确处理异常:

Connection conn = null;
Statement stmt = null;
try {
    Class.forName("com.mysql.cj.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "user", "pass");
    
    // 先判断连接是否有效,再执行后续操作
    if (conn != null) {
        stmt = conn.createStatement();
        // 执行SQL查询/更新等操作
    } else {
        System.out.println("数据库连接创建失败");
    }
} catch (ClassNotFoundException e) {
    System.out.println("找不到JDBC驱动类");
    e.printStackTrace();
} catch (SQLException e) {
    System.out.println("数据库连接失败:" + e.getMessage());
    e.printStackTrace();
} finally {
    // 务必关闭资源,避免内存泄漏
    try {
        if (stmt != null) stmt.close();
        if (conn != null) conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

3. 核查连接相关配置

  • 确认JDBC URL格式正确(比如MySQL需带时区参数:jdbc:mysql://localhost:3306/db?serverTimezone=UTC)
  • 数据库用户名、密码是否正确
  • 数据库服务是否正常启动,端口是否开放
  • JDBC驱动依赖是否正确引入(比如Maven项目需添加对应驱动的依赖坐标)

4. 不要忽略异常反馈

很多初学者会在catch块只打印日志,却没意识到此时连接已创建失败,后续代码仍会执行并触发空指针。要在异常处理中明确标记连接失败的状态,避免无效代码继续执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:12:08