(JAVA) 需要将 DATE 转换为 SQL 的准备语句

(JAVA) Need to convert DATE to prepared statement for SQL

在过去的一个小时里,我一直在寻找并尝试网络(和 SO)提供的解决方案,了解如何在 Java 中使用 Date 类型,但我似乎无法理解在职的。我使用的是 NetBeans 11.2,我 习惯于 Java,这让我很难过(没有双关语意)。似乎 LocalDateTimeDateTime 已贬值,我应该使用 java.time

老实说,我不知道该怎么办了。我正在尝试构建一个包含输入值的查询以保存在 mySQL 数据库中。

日期的来源来自<input type="date">

SignIn.java (servlet) :

String birthDate = request.getParameter("data_birthdate");

UserDto userDto = null;
UserDao userDao = new UserDao(); 

try 
{ 
// Tried this 
    userDto = userDao.CreateUser(LocalDateTime.parse(birthDate));
// Tried that
    userDto = userDao.CreateUser(Date.parse(birthDate));
// Tried this 
    userDto = userDao.CreateUser(Time.parse(birthDate));
}

userDao.java(道) :

public void CreateUser(Date dateBirth) throws SQLException {
try {
        connect = db.getConnect();
        ps = connect.prepareStatement(SQL_CreateUser);
        ps.setDate(1, dateBirth);
        ps.executeUpdate();
    }
}

您可以将 LocalDateTimePreparedStatement#setTimestamp() 一起使用。以下是大致的操作方法:

String birthDate = request.getParameter("data_birthdate");
// assuming your text birthdates look like 1980-12-30 00:30:05
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dt = LocalDateTime.parse(birthDate, formatter);

try {
    connect = db.getConnect();
    ps = connect.prepareStatement(SQL_CreateUser);
    ps.setTimestamp(3, Timestamp.valueOf(dt));
}
catch (Exception e) {
    // handle exception
}

请仔细注意调用 DateTimeFormatter#ofPattern 时使用的格式掩码。您需要用实际适合您的字符串日期的任何掩码替换它。