【发布时间】:2021-10-13 02:23:57
【问题描述】:
我看到了一些关于这个的类似问题,但是,他们似乎都没有在这里帮助我。
我有一个带有此掩码“##-##-####”的 jFormattedTextField,并且我使用 dd-MM-yyyy 将日期发送到 PostgreSQL,此字段用于出生日期。
当我使用普通的 jTextfield 并且用户必须输入“/”或“-”来分隔日、月和年时,可以检查它是否为空,但是,在打开掩码的情况下,我无法检查。
else if (jFormattedTextFieldDATA.getText().equals(""))
{
JOptionPane.showMessageDialog(null,"Por favor completar o campo Data"); //please complete date field
try {
conecta.conn.setAutoCommit(false);
conecta.conn.rollback();
} catch (SQLException ex) {
Logger.getLogger(Pessoa.class.getName()).log(Level.SEVERE, null, ex);
}
而且,这就是 netbeans 说错误的地方:
SimpleDateFormat formatter = new SimpleDateFormat ("dd-MM-yyyy");
java.util.Date utilDate = null;
try {
utilDate = formatter.parse(jFormattedTextFieldDATA.getText());
} catch (ParseException ex) {
Logger.getLogger(Pessoa.class.getName()).log(Level.SEVERE, null, ex);
}
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
pst.setDate(5, sqlDate);
pst.executeUpdate(); //executa o SQL
这是从 netbeans 得到的:
java.lang.NullPointerException:无法调用“java.util.Date.getTime()”,因为“utilDate”为空
【问题讨论】:
-
记录器语句(用于
formatter.parse)显示什么 -
所以在
catch (ParseException ex)之后可以继续吗? -
我得到这个 java.text.ParseException: Unparseable date: " - - "
-
我建议打电话给
getValue而不是getText...检查是否是null -
回答
catch (PaserException ex)是的,可以继续,如果我能得到空字段