【发布时间】:2018-07-14 06:31:44
【问题描述】:
我正在开发一个 java 程序,我希望输入用户的日期。
为此,我使用了 JSpinner 并将其模型类型设置为 Spinner 模型编辑器中的 Date。
此外,默认情况下,微调器还显示 时间 和它,我不想要时间,但只需要日期,因此我创建了一个新的 SimpleDateFormat 并应用于微调器。
这是 SimpleDateFormat 的代码:-
SimpleDateFormat date_format = new SimpleDateFormat("dd-MM-yyyy");
dateSpinner.setEditor(new JSpinner.DateEditor(dateSpinner,date_format.toPattern()));
我使用 DateFormat 是因为我想以 dd-mm-yyyy 格式显示日期。
之后我使用 stateChanged 方法 来获取用户通过 JSpinner 选择的日期。
方法体如下:-
private void stateChanged(javax.swing.event.ChangeEvent evt) {
Date dateChosen = (Date) dateSpinner.getValue();
int date = dateChosen.getDate();
int month = ( dateChosen.getMonth() ) + 1;
int year = ( dateChosen.getYear() ) + 1900;
String DB_Date = String.valueOf(year) + "-" + String.valueOf(month) + "-" + String.valueOf(date);
// 1 was added to **month** because month's were 1 less than the conventional human format
// also, 1900 was added to **year** to make it suitable for apperance of human conventions
}
现在,我希望将此日期从用户输入到我的 MySQL 数据库列,其数据类型为 DATE。
为此,我尝试了以下方法:-
1.我尝试使用setDate()方法,其参数为dateChosen,其代码如下:-
PreparedStatement stmt = new PreparedStatement();
stmt.setDate (column_no, (java.sql.Date) dateChosen);
但是没有存储日期,并且 MySQL 表的日期列留空。
.
2.我尝试使用setString()方法,其参数为DB_Date,其代码如下:-
PreparedStatement stmt = new PreparedStatemnt();
stmt.setString (column_no, DB_Date);
但是,MySQL 表的(日期)列再次留空。
现在,我想知道如何将 JSpinner 中的日期存储到数据类型为 DATE 的 MySQL 表列中。
另外,如果除了使用 JSpinner 将日期存储在 MySQL 表中之外还有其他方法,请告诉我。
【问题讨论】:
标签: java mysql swing simpledateformat jspinner