java - 如何使用 java swing 文本框输入日期并将其存储在 mysql 数据库中?

标签 java mysql jdbc

我想做什么?

我有一个 Customers 类,它有一个变量 dob//Date of Birth

我正在尝试使用 java Swing 文本字段从用户那里获取输入。

将其转换为java日期,然后转换为java.sql.Date,以便我可以将其存储在我的MySQL数据库中。

这是Customer类的setter方法

public  void setDOB(java.sql.Date dob)
{
    DateOfBirth = dob;
}   

这是我的 Swing 类(应用程序窗口加载器)的代码

//Date
            if(textField_5.getText().isEmpty())
                lblerr.setVisible(true);
            else
            {
                try {
                    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-YYYY");
                    Date dob = null;
                    dob = sdf.parse(textField_5.getText());
                    java.sql.Date sqlDate = new java.sql.Date(dob.getTime());
                    c1.setDOB(sqlDate);

                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                allinfoisentered = true;
            }   

textField_5 - 是用户输入日期的字段。

我使用以下不同的输入测试了我的应用程序:

  1. 12-12-1993
  2. 10-05-1970

问题是:存储在 MySQL 表中的值是 1992-12-27,我有一种强烈的感觉,这是某个默认日期。

我想知道,如何将字符串解析为日期,然后将其发送到 MySQL 表。

最佳答案

(如评论中所讨论...)

你有两个问题:

  • 您的解析格式不正确。它应该使用“yyyy”而不是“YYYY”
  • 更重要的是 (IMO) 您的错误处理不正确。您正在使用此 catch block :

    catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    

    ... 这意味着即使解析失败,您也将插入除日期之外的所有数据,日期不会被设置。无论如何,您应该已经能够从日志文件中获取信息,但大概您没有记录 System.err,或者您没有查看日志.

错误处理非常重要。如果在解析数据时发生异常,我预计你根本不想插入记录 - 相反,错误应该向上传播到堆栈,强制你记下它,不要丢失信息。所以你可能想要这样的东西:

catch (ParseException e) {
    throw new DataValidationException(
        "Error parsing date: " + textField_5.getText(), e);
}

(其中 DataValidationException 只是一个虚构的异常 - 您应该考虑您希望在您的应用中始终如一地使用什么。)

发生错误时,有两件事非常重要:

  • 你当时应该妥善处理。这通常意味着中止当前操作,尽管在某些情况下您可以重试,或者在没有一些不重要的信息的情况下继续。
  • 您应该捕获足够的信息以便稍后了解错误。

关于java - 如何使用 java swing 文本框输入日期并将其存储在 mysql 数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13392824/

相关文章:

php - 共享 mysqli 连接

tomcat - tomcat jdbc连接池中的JavaMelody集成

java - jdbc.ConnectionImpl.buildCollat​​ionMapping 抛出 ClassCastException

mysql - 使用 Equijoin 更新查询

java - 谷歌地图 : Save markers in an array and then list them

java - 为什么在重写 toString 方法时需要 public 修饰符?

mysql - 如何增加 "primary key"自动增量数?

php - 如何在 Cake PHP 3.5 中设置模型之间的关联?

java - 如何隐藏java进程的参数?

java - Spring-boot 应用程序在执行器端口上抛出错误