(JAVA) Необходимо преобразовать DATE в подготовленный оператор для SQL - PullRequest
1 голос
/ 08 ноября 2019

В течение последнего часа я искал и пробовал решения, предоставленные в Интернете (и SO), о том, как использовать тип Date в Java, но я не могу заставить его работать. Я использую NetBeans 11.2, и я не привык к Java, и это доставляет мне трудности (без каламбура). Кажется, что LocalDateTime, Date и Time устарели и что я должен использовать java.time.

Если честно, я не знаю, что делать дальше. Я пытаюсь создать запрос со значением входных данных для сохранения в mySQL базе данных.

Источником даты является <input type="date">

SignIn.java (сервлет) :

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 (Dao) :

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

1 Ответ

2 голосов
/ 08 ноября 2019

Вы можете использовать LocalDateTime вместе с PreparedStatement#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. Вам нужно заменить это любой маской, которая действительно соответствует вашим строковым датам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...