首页 > 解决方案 > 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。

标签: javadatetimenetbeans

解决方案


推荐的解决方案:使用dateRDBMS 的数据类型

如果您的数据库引擎提供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.setDatevarchar列一起使用。

关联


推荐阅读