目前在我的 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(如果有帮助的话)。
最佳答案
推荐的解决方案:使用 RDBMS 的date
数据类型
如果您的数据库引擎提供了date
数据类型(绝大多数都这样做),请使用它。并使用现代 Java 日期和时间 API java.time 中的 LocalDate
,而不是两个 Date
类。它们设计不佳且早已过时。您可能无法更改日期选择器的返回类型,但在收到它时首先要进行转换。
Date utilDate = jDateChooser1.getDate();
LocalDate localDate = utilDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
prepStat.setObject(6, localDate);
这需要一个兼容 JDBC 4.2 的驱动程序,您可能已经拥有了。
不鼓励的解决方案:转换为String
如果不允许更改数据库中的数据类型,请转换为 Java 中的 String
:
prepStat.setString(6, localDate.toString());
其余与之前相同。
您的代码出了什么问题?
这不是我知道的事情,但我怀疑您不允许将 PreparedStatement.setDate
与 varchar
列一起使用。
链接
- Oracle tutorial: Date Time解释如何使用 java.time。
关于java - jDateChooser1 需要转换为 varchar 才能存储在数据库中,我该怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58602685/