java - 从 JSpinner 获取日期并放入具有 DATE 格式的 MySQL 数据库列
问题描述
我正在开发一个 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
}
现在,我希望将此日期从用户输入到数据类型为DATE的 MySQL 数据库列中。
为此,我尝试了以下方法:-
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 表中之外,还有其他方法,请也告诉我。
解决方案
Date
类型为JDBC
is ,java.sql.Date
其他情况为is java.util.Date
,不一样,不能直接转换
您可以尝试使用以下代码
PreparedStatement stmt = new PreparedStatement();
stmt.setDate (column_no, new java.sql.Date(dateChosen.getTime()));
顺便说一句,如果您使用java-8
and jdbc-4
,更合适的方法是使用LocalDate
stmt.setDate (column_no, localDate.now());
推荐阅读
- ktor - Ktor 似乎正在吞噬异常
- python - 如何使用 matplotlib.pyplot.show 根据自定义顺序对直方图进行排序?
- wordpress - 如何让每个人都拥有自己的 buddypress 个人资料而看不到其他人的资料?
- php - 挣扎于 MySQL 和 PHP 表单,无法打印结果
- python - 我正在使用请求阅读此 api 响应,我如何获取每个项目和值,因为它不是列表
- python - 从具有唯一列名的 python 列表中将列附加到 SQL 数据库
- mysql - 在我的 SQl 中创建一个包含两列的表时。一种是 char 数据类型,另一种是 int 数据类型。我遇到问题
- jquery - 将 jquery 警报分成两行
- machine-learning - 机器学习的数据注释
- flutter - 如何在颤动的谷歌地图中获取用户当前位置作为初始位置