我的问题是我不知道如何处理空的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();
}
答案 0 :(得分:0)
null将再次给出nullpointer异常。他也检查 空字符串,但我想要的是将“ 00000000”转换为空 LocalDate。我需要知道如何获得可用于 我的ms访问数据库。
但是事实是-如前所述-Access表中的“空日期”为空-没有其他选择。
所以: