java - jDateChooser1 需要转换为 varchar 才能存储在数据库中,我该怎么做?
问题描述
目前在我的 jframe 上,我有 jdatechooser 并且正在使用以下代码:
java.util.Date utilDate = (java.util.Date) jDateChooser1.getDate();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
prepStat.setDate(6, sqlDate);
但是当我在 jframe 上单击添加时,这是唯一没有输入的数据
该变量称为 Target_Date,如果有帮助,则设置为 varchar。
解决方案
推荐的解决方案:使用date
RDBMS 的数据类型
如果您的数据库引擎提供date
数据类型(绝大多数都提供),请使用它。并使用LocalDate
来自现代 Java 日期和时间 API 的 java.time,而不是这两个Date
类。它们设计不佳且早已过时。您可能无法从日期选择器更改返回类型,但在收到它时首先进行转换。
Date utilDate = jDateChooser1.getDate();
LocalDate localDate = utilDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
prepStat.setObject(6, localDate);
这需要符合 JDBC 4.2 的驱动程序,您可能已经掌握了。
不鼓励的解决方案:转换为String
如果不允许更改数据库中的数据类型,请String
在 Java 中转换为 a:
prepStat.setString(6, localDate.toString());
其余的和以前一样。
你的代码出了什么问题?
这不是我所知道的,但我怀疑您不允许PreparedStatement.setDate
与varchar
列一起使用。
关联
- Oracle 教程:日期时间解释如何使用 java.time。
推荐阅读
- java - 使用 Spring Data 存储库填充测试数据
- c# - 在 C# 中使用 IComparer 接口进行排序时如何克服 ArgumentException?
- javascript - 如何使用 jquery 在 HTML 画布中的选定图像对象中添加渐变效果
- javascript - jquery .hover() outFunction 闪烁的bug
- angular - 如何在鼠标输入时显示一个元素 - Angular 4+
- javascript - 如何根据点击更改文本而不将其更改回来,除非页面刷新
- mysql - 为什么我在 mysql 中收到语法错误?
- python - 如何比较两个excel文件以检查python中的格式?
- cordova - IBM Mobilefirst Pugin 不支持 Cordova 版本 >7
- amazon-web-services - 如何解决“ssh_exchange_identification: read: Connection reset”错误?