Как добавить значение типа LocalDate в базу данных при помощи PreparedStatement
Есть метод add(Employee employee) который принимает employee. У этого employee есть разные данные, включая дату приёма на работу типа LocalDate.now().
String sql = "insert into employee values (?, ...)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setDate(1, Date.valueOf(employee.getHired()));
Этот employeе хочу добавить в базу данных. При добавление даты нету метода setLocalDate в statement, и попытался, преобразовать в тип Date, но пишет что такое преобразование не возможно. Как решить проблему, сделать чтоб statement получил дату типа LocalDate.
При использовании
statement.setObject(6, employee.getHired());
выдает java.sql.SQLSyntaxErrorException: incompatible data type in conversion
Может что то неправильно написал?
Ответы (1 шт):
Для работы с LocalDate в JDBC есть методы setObject/getObject.
LocalDate будет преобразована в тип DATE SQL.
myPreparedStatement.setObject (1 , myLocalDate);
Для получения даты из базы, нужно в аргументы setObject передать аргумент class того типа данных, которые мы хотим получить.
LocalDate localDate = myResultSet.getObject ("date_column" , LocalDate.class);