Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的数据库中存在java.lang.NullPointerException错误_Java_Mysql_Database_Nullpointerexception_Sql Insert - Fatal编程技术网

我的数据库中存在java.lang.NullPointerException错误

我的数据库中存在java.lang.NullPointerException错误,java,mysql,database,nullpointerexception,sql-insert,Java,Mysql,Database,Nullpointerexception,Sql Insert,我的代码有问题吗?关于我的代码哪里出了问题,我已经讨论了将近一个小时,每次我添加一个信息,它总是显示一个错误,这是nullpointerexception,这里有热情的程序员来帮助这个业余程序员吗?我才刚开始 if (tf_accnum.equals("") || tf_bankID.equals("") || uname.equals("") ||pword.equals("")) { JOptionPane.showMessageDialog(null,"ALL FIELDS

我的代码有问题吗?关于我的代码哪里出了问题,我已经讨论了将近一个小时,每次我添加一个信息,它总是显示一个错误,这是nullpointerexception,这里有热情的程序员来帮助这个业余程序员吗?我才刚开始

 if (tf_accnum.equals("") || tf_bankID.equals("") || uname.equals("") ||pword.equals("")) {
       JOptionPane.showMessageDialog(null,"ALL FIELDS ARE REQUIRED");
   } else  {


       try {

        String sql = "Insert into tbl_memaccount(memaccID,memberID,username,password)values(?,?,?,?)";
        PreparedStatement pst = con.prepareStatement(sql);
     ps.setString(1,tf_accnum.getText());
     ps.setString(2,tf_bankID.getText());
     ps.setString(3,uname.getText());
     ps.setString(4,pword.getText());
     ps.execute();
     JOptionPane.showMessageDialog(null,"Successful");


    } catch(Exception ex) {
        System.out.println(ex);
    }
}

我猜第一行有例外。若任何变量
tf\u accnum、tf\u bankID、uname或pword
为空,您将得到
java.lang.NullPointerException

您可以按如下方式使空字符串检查安全:

if ("".equals(tf_accnum) || "".equals(tf_bankID) || "".equals(uname) || "".equals(pword))
使用上述代码,即使输入变量的值为空,也不会出现异常,并将继续执行
else
code部分。但在设置插入参数时会出现异常,因为您使用了{your variable}.getText()

您的代码的完整安全版本为:

if (tf_accnum == null || "".equals(tf_accnum)
    || tf_bankID == null || "".equals(tf_bankID)
    || uname == null || "".equals(uname)
    || pword == null || "".equals(pword)) {
    JOptionPane.showMessageDialog(null,"ALL FIELDS ARE REQUIRED");
} else  {
    try {
        String sql = "Insert into tbl_memaccount(memaccID,memberID,username,password)values(?,?,?,?)";
        PreparedStatement pst = con.prepareStatement(sql);
        ps.setString(1,tf_accnum.getText());
        ps.setString(2,tf_bankID.getText());
        ps.setString(3,uname.getText());
        ps.setString(4,pword.getText());
        ps.execute();
        JOptionPane.showMessageDialog(null,"Successful");
    } catch(Exception ex) {
        System.out.println(ex);
    }
}

我猜第一行有例外。若任何变量
tf\u accnum、tf\u bankID、uname或pword
为空,您将得到
java.lang.NullPointerException

您可以按如下方式使空字符串检查安全:

if ("".equals(tf_accnum) || "".equals(tf_bankID) || "".equals(uname) || "".equals(pword))
使用上述代码,即使输入变量的值为空,也不会出现异常,并将继续执行
else
code部分。但在设置插入参数时会出现异常,因为您使用了{your variable}.getText()

您的代码的完整安全版本为:

if (tf_accnum == null || "".equals(tf_accnum)
    || tf_bankID == null || "".equals(tf_bankID)
    || uname == null || "".equals(uname)
    || pword == null || "".equals(pword)) {
    JOptionPane.showMessageDialog(null,"ALL FIELDS ARE REQUIRED");
} else  {
    try {
        String sql = "Insert into tbl_memaccount(memaccID,memberID,username,password)values(?,?,?,?)";
        PreparedStatement pst = con.prepareStatement(sql);
        ps.setString(1,tf_accnum.getText());
        ps.setString(2,tf_bankID.getText());
        ps.setString(3,uname.getText());
        ps.setString(4,pword.getText());
        ps.execute();
        JOptionPane.showMessageDialog(null,"Successful");
    } catch(Exception ex) {
        System.out.println(ex);
    }
}

该异常是从Java代码生成的。当您将异常写入控制台时,在异常堆栈上跟踪产生异常的行号是多少?该异常是从Java代码生成的。当您将异常写入控制台时,在异常堆栈上跟踪引发异常的行号是什么?即.isEmpty和throw;部分代码用红色标记。你认为问题出在哪里?是编译错误吗?您的问题不清楚变量的类型(
tf_accnum
tf_bankID
,…),这可能就是缺少
isEmpty()
方法的原因。我确实更新了答案以传递编译错误,请尝试我更新的答案。是的,事实上你是对的。罪魁祸首是我的if条件。the.isEmpty and throw;部分代码用红色标记。你认为问题出在哪里?是编译错误吗?您的问题不清楚变量的类型(
tf_accnum
tf_bankID
,…),这可能就是缺少
isEmpty()
方法的原因。我也更新了答案来传递编译错误,试试我更新的答案。是的,事实上你是对的,罪魁祸首是我的if条件。