Хранение данных Java Ucanaccess - PullRequest
0 голосов
/ 27 апреля 2018

Я пытался сохранить в двух столбцах текущие данные и время в моей базе данных microsft access из java, но когда я открыл свой файл, данные не были сохранены. Я попытался напечатать столбцы, но это напечатало "нуль". Как я могу это сделать?

Date date = new Date();
final String formattedDate = new SimpleDateFormat("yyyy-MM-dd").format(date.getTime());
final String formattedTime = new SimpleDateFormat("HH:mm:ss").format(date.getTime());
final java.sql.Date sqlDate = java.sql.Date.valueOf(formattedDate);
final java.sql.Time sqlTime = java.sql.Time.valueOf(formattedTime);

...

PreparedStatement ps=con.prepareStatement("insert into Table1(Data) values(?)");
ps.setDate(1,sqlDate);
ps=con.prepareStatement("insert into Table1(Hour) values(?)");
ps.setTime(1,sqlTime);
ps.executeUpdate();

Это печатный результат:

ID Name Date Hour
0001 Mary null null

1 Ответ

0 голосов
/ 27 апреля 2018

Пара баллов:

  • Насколько я могу судить, нет смысла хранить дату и время в двух отдельных столбцах таблицы базы данных. Я бы использовал один столбец типа данных datetime.
  • Классы java.util.Date, SimpleDateFormat, java.sql.Date и Time давно устарели и плохо разработаны. Лучше использовать java.time, современный Java API даты и времени. Намного приятнее работать.

Принимая как должное, что дата и время находятся в отдельных столбцах, ваш код может выглядеть следующим образом:

    LocalDateTime dateTimeNow = LocalDateTime.now(ZoneId.of("Europe/Rome"));
    LocalDate dateToday = dateTimeNow.toLocalDate();
    LocalTime timeNow = dateTimeNow.toLocalTime();
    PreparedStatement ps 
            = con.prepareStatement("insert into Table1(Data, Hour) values(?, ?)");
    ps.setObject(1, dateToday);
    ps.setObject(2, timeNow);
    ps.executeUpdate();

Это вставит одну строку, содержащую как текущий день, так и текущее время. Пожалуйста, используйте желаемый часовой пояс, в который я поместил Европу / Рим, поскольку дата и время зависят от часового пояса.

Ссылка: Обучающее руководство по Oracle: Дата и время , объясняющее, как использовать java.time.

...