如何在MS Access数据库中插入一个空的DateTime?

时间:2018-10-11 11:19:32

标签: java database datetime ms-access datetime-format

我的问题是我不知道如何处理空的LocalDate对象。

我有一个带有日期列的Excel工作表。格式如下:

19693112 要么 00000000(如果日期未知)

在我的Java应用程序内部,我更改了数据格式并将其上传到数据库。

我首先将String转换为所需的格式(1969年12月31日)。

我可以将第一种格式毫无问题地插入数据库。但是第二个方法永远都行不通,因为我的转换类将其转换为00.00.0000,而ms access不接受此方法。

我已经尝试将我想要的值设置为“ null”,但是数据库无法为日期字段处理该值。

数据库中的值是否仅显示一个空的日期字段?

感谢您的帮助。

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 :(得分:0)

  

null将再次给出nullpointer异常。他也检查   空字符串,但我想要的是将“ 00000000”转换为空   LocalDate。我需要知道如何获得可用于   我的ms访问数据库。

但是事实是-如前所述-Access表中的“空日期”为-没有其他选择。

所以:

  • 修改代码,为空日期插入 Null
  • 调整代码以期望并接受 Null 为空日期,并将其转换为代码接受的任何值(00000000)。