Как вставить пустой DateTime в базу данных MS Access? - PullRequest
0 голосов
/ 11 октября 2018

Моя проблема в том, что я не знаю, как обрабатывать пустой объект LocalDate.

У меня есть лист Excel, в котором есть столбец даты.Формат выглядит следующим образом:

19693112 или 00000000 (если дата еще не известна)

Внутри Java-приложения я изменяю формат данных и загружаю их в базу данных.

Сначала я конвертирую строку в нужный мне формат (31.12.1969).

Я могу без проблем вставить первый формат в свою базу данных.но второй никогда не работает, потому что мой класс преобразования преобразует его в 00.00.0000, и это не принимается MS Access.

Я уже пытался установить значение, которое я хочу, чтобы "ноль", но база данных не может обработать этозначение для поля даты.

Есть ли способ, чтобы значение в базе данных отображало просто пустое поле даты?

Спасибо за любую помощь.

public static void insertNewPensioners(List<Pensioner> newPensioners) {

    if (cell.getColumnIndex() == indexe.get(19)) { //checks if correct excelcell is used
        String cellValue = cell.getStringCellValue();
        if (cellValue.matches("0+")) {
            resignationDate = null;
        } else {
            resignationDate = DateFormatter.formatDate(cellValue);
        }

        pensionerExcel.add(new Pensioner(pknr, idkz, resignationDate));

        insertNewPensioners(newPensioners);

        public static void insertNewPensioners (List < Pensioner > newPensioners) {
            try {
                connect(pathDB);
            } catch (Exception e) {
                Alerts.connectionError();
                e.printStackTrace();
            }

            for (int i = 0; i < newPensioners.size(); i++) {
                String insert = ("Insert into Pensionär (PKNR, IDKZ, ResignationDate) VALUES " +
                        "(?,?,?)");
                try {
                    ps = connection.prepareStatement(insert);
                    ps.setInt(1, newPensioners.get(i).getPensionInsuranceNumber());
                    ps.setInt(2, newPensioners.get(i).getIdkz());
                    ps.setDate(3, Date.valueOf(newPensioners.get(i).getResignationDate()));
                    ps.executeUpdate();
                    validRows++;
                } catch (Exception e) {
                    Alerts.wrongValues();
                    e.printStackTrace();
                }
            }
            close();
        }

1 Ответ

0 голосов
/ 11 октября 2018

null снова выдаст исключение nullpointer.Также он проверяет наличие строки empy, но я хочу «преобразовать» 00000000 в пустую LocalDate.Мне нужно знать, как я могу получить формат, который можно использовать в моей базе данных MS Access.

Но факт, как уже упоминалось, в том, что «пустая дата» в таблице Access равна Null - другого варианта нет.

Итак:

  • измените код, вставив Null для ваших пустых дат
  • скорректируйте код так, чтобы он ожидал и принимал Ноль для пустой даты и конвертируйте его во все, что принимает ваш код (00000000).
...