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

Java GUI登录功能触发NullPointerException问题求助

登录界面点击按钮触发NullPointerException问题

我设计了一个登录界面,用于将用户输入的信息与数据库中的信息进行比对。点击登录按钮时出现了NullPointerException,我知道这个异常是调用无值变量导致的,但已经确认输入的变量存在有效值。

问题代码

private void admin_loginActionPerformed(java.awt.event.ActionEvent evt) {                                            
        
    // 存储输入的用户名和密码,用于和数据库比对
    String namee = name_admin.getText();
    int pass = Integer.parseInt(pass_admin.getText());   

    try {
        // 第128行
        pre = con.prepareStatement("Select * from adminn where adm_name='" + namee + "' and adm_password='" + pass + "'");

        ru = pre.executeQuery();

        if (ru.next()) {
            System.out.println("login done");
        } else {
            System.out.println("login faild");
        }

    } catch (Exception er) {
        er.printStackTrace();
        System.out.println(er);
    }
}                                            

private void back_libActionPerformed(java.awt.event.ActionEvent evt) {                                         
    library ii = new library();
    dispose();
    ii.setVisible(true);
}                                         

异常信息

java.lang.NullPointerException
java.lang.NullPointerException
    at ad_login.admin_loginActionPerformed(ad_login.java:128)

问题排查与解决

  1. 核心原因:第128行的con(数据库连接对象)为null。你确认了输入变量有效,但忽略了数据库连接对象是否完成初始化——如果con没被正确实例化、未建立连接就调用prepareStatement,必然触发NPE。

  2. 解决步骤:

    • 检查con对象的初始化逻辑,确保在调用admin_loginActionPerformed方法前,已经通过JDBC完成了数据库连接(比如在窗体构造方法、init方法中执行连接代码),保证con不是null。
    • 修复SQL注入风险:不要直接拼接字符串生成SQL,改用PreparedStatement的参数绑定方式,代码更安全也更规范:
      pre = con.prepareStatement("Select * from adminn where adm_name=? and adm_password=?");
      pre.setString(1, namee);
      // 如果数据库中密码是字符串类型,这里应该用setString,同时把pass改成String类型接收
      pre.setInt(2, pass);
      
    • 注意密码类型:如果数据库中adm_password是字符串类型(比如varchar),不要将输入的密码转成int,直接用String pass = pass_admin.getText()接收,避免不必要的类型转换错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:10:48