Java 如何读取Excel日期并将其存储到数据库中?

Java 如何读取Excel日期并将其存储到数据库中?,java,excel,date,Java,Excel,Date,我正在尝试读取Excel日期值并将其存储到数据库中 以下代码是我得到的: Date birthdate = null; case 8: birthdate = cell.getDateCellValue(); break; 开关的作用是将日期存储在变量中,然后将其放入数组中 Identity id = new Identity(BSN, sort, birthdate, place); 我将这些值中的多个存储到arraylist中 for(Identity id

我正在尝试读取Excel日期值并将其存储到数据库中

以下代码是我得到的:

Date birthdate = null;
case 8:
       birthdate = cell.getDateCellValue();
       break;
开关的作用是将日期存储在变量中,然后将其放入数组中

Identity id = new Identity(BSN, sort, birthdate, place);
我将这些值中的多个存储到arraylist中

for(Identity id : Identities) {
        System.out.println(id.toString());
        idmc.insertID(""+id.getBSN(), id.getSort(), id.getBirthdate(), id.getPlace());
    }
日期的获取者和设置者是显而易见的,但我将发布它以防万一

public void Birthdate (Date birthdate) {
    this.birthdate = birthdate;
}

public Date getBirthdate() {
    return birthdate;
}
然后,要插入从数组中获取的值,我使用以下方法:

public String insertID(String BSN, String SoortID, Date UitgiftedatumID, String UitgifteplaatsID) {
    String returning = null;
    try {
        query = "insert into Identiteit values(?,?,?,?);";

        pst = connection.prepareStatement(query);
        pst.setInt(1, Integer.parseInt(BSN));
        pst.setString(2, Sort);
        pst.setDate(3, birthdate);
        pst.setString(4, place);

        int response = pst.executeUpdate();
        returning = response +" Records has/have been edited";

    } catch (SQLException e) {
        returning = " ";

    }

    return returning;   
}
但是,行:
pst.setDate(3,UitgiftedatumID)说明:
不可匹配类型:java.util.Date无法转换为java.sql.Date。

我尝试了如下转换:
pst.setDate(3,(java.sql.Date)UitgiftedatumID)


但不幸的是,这对我不起作用

Java中有两个
Date
类:
Java.util.Date
(通用日期时间类)和
Java.sql.Date
(表示日期的JDBC相关类(没有时间组件))
PreparedStatement#setDate()
方法接受后者作为其第二个参数

要将
java.util.Date
的实例转换为
java.sql.Date
的实例,可以执行以下操作:

java.util.Date UitgiftedatumID = ... // some value
java.sql.Date sqlDate = UitgiftedatumID == null ? null : new java.sql.Date(UitgiftedatumID.getTime());

我现在使用的不是初始化日期,而是您的代码。但是,
.getTime
部分给出了一条注释,说明:
取消对空指针的引用
,因此我在该规则上得到了一个
NullPointerException
,其中我初始化
java.sql.Date sqlDate=new java.sql.Date(uitGifteAtumid.getTime())此。抱歉,我错过了初始日期可能为
null
的可能性。我已经更新了我的答案来处理这个问题。非常感谢你,伙计!现在成功了!最后,日期显示在我的数据库中。非常感谢你,祝你有一个美好的一天!不客气!请毫不犹豫地投票和/或接受我的回答。如果您有(或可以得到)JDBC 4.2版JDBC驱动程序,您应该更愿意转换为
java.time.LocalDate
,而不是
java.sql.Date
,然后通过
pst.setObject()
传递它。较新的Java日期和时间类通常对程序员友好得多,即使Apache POI(或您正在使用的Excel)还不支持它们,您可以越早开始将应用迁移到它们,效果越好。