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

运行Java Swing+JDBC增删改查代码报AWT-EventQueue-0空指针异常求助

问题定位与修复方案

你遇到的空指针异常核心由以下2个常见错误导致,按优先级排查即可:

1. 首要问题:JDBC连接变量作用域错误

你在成员位置已经定义了Connection con;,但在Connect()方法中又重复声明了一个局部同名变量Connection con;,最终你赋值的是方法内的局部变量,类的成员变量con始终是null,后续执行con.prepareStatement时直接触发空指针。

修复代码:

public void Connect(){
    try{
        // 删除该行重复声明:Connection con;
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/gbproducts","root","root");
        System.out.println("数据库连接成功");
    }catch(SQLException ex){
        ex.printStackTrace();
        JOptionPane.showMessageDialog(null, "数据库连接失败:" + ex.getMessage());
    }
}

2. 次要问题:Swing组件未初始化

如果你是用IDE可视化拖拽生成的界面,需要确认所有组件(txtName、saveButton、txtPrice等)的变量名和你代码中声明的完全一致,IDE已经自动生成了组件初始化逻辑。如果组件未绑定,调用addActionListener或者getText时也会触发空指针。

3. 补充优化:空值校验逻辑

为了避免后续异常,操作前增加空值校验:

  • 输入校验:用户点击按钮时先判断输入框是否为空
    // 保存按钮逻辑中新增
    String name = txtName.getText().trim();
    String price = txtPrice.getText().trim();
    String qty = txtQty.getText().trim();
    if(name.isEmpty() || price.isEmpty() || qty.isEmpty()){
        JOptionPane.showMessageDialog(null, "所有输入项不能为空");
        return;
    }
    
  • 连接校验:执行SQL前先判断数据库连接是否有效
    if(con == null){
        JOptionPane.showMessageDialog(null, "数据库未连接,请检查配置");
        return;
    }
    

4. 其他注意事项

确认项目中已经导入MySQL驱动依赖(mysql-connector-java),如果是低版本JDBC需要在getConnection前手动加载驱动:

Class.forName("com.mysql.cj.jdbc.Driver");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:39:01