我的数据库中存在java.lang.NullPointerException错误
我的代码有问题吗?关于我的代码哪里出了问题,我已经讨论了将近一个小时,每次我添加一个信息,它总是显示一个错误,这是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
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条件。