簡體   English   中英

如何使用java swing文本框輸入日期並存儲在mysql數據庫中?

[英]how to take an input of date using java swing text box and store in mysql database?

我想做的事 ?

我有一個類客戶,它有一個可變的 dob // 出生日期

我正在嘗試使用 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,我有一種強烈的感覺,這是某個默認日期。

我想知道,如何將字符串解析為 Date,然后將其發送到 MySQL 表。

(正如評論中所討論的......)

你有兩個問題:

  • 您的解析格式不正確。 它應該使用“yyyy”而不是“YYYY”
  • 更重要的是(IMO)您的錯誤處理不正確。 您正在使用此catch塊:

     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只是一個DataValidationException異常 - 您應該考慮要在應用程序中一致使用的內容。)

發生錯誤時,有兩件事至關重要:

  • 你當時應該妥善處理。 這通常意味着中止當前操作,盡管在某些情況下您可以重試,或者在沒有一些不重要信息的情況下繼續。
  • 您應該捕獲足夠的信息以便稍后了解錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM