我正在尝试使用UCanAccess从Microsoft Access数据库中检索日期信息。我需要把它放在tableview的LocalDate列中,我正在做这个
Date date = res.getDate(3);
LocalDate dateEchantillonnage = LocalDate.parse( new SimpleDateFormat("yyyy-MM-dd").format(date) );
但它给我带来两个问题:
第一个是它给出了NullPointerException,因为有时日期可以为null,所以我想知道是否有办法对此进行补救。
第二个是我替换
的时候Date date = res.getDate(3);
LocalDate dateEchantillonnage = LocalDate.parse( new SimpleDateFormat("yyyy-MM-dd").format(date) );
带
Date date = new Date(2015-07-01);
LocalDate dateEchantillonnage = LocalDate.parse( new SimpleDateFormat("yyyy-MM-dd").format(date) );
它始终显示日期:1970-01-01
答案 0 :(得分:1)
Optional<LocalDate> dateEchantillonnage = date == null
? Optional.empty()
: Optional.of(date.toLocalDate());
答案 1 :(得分:0)
修复NPE:
Date date = res.getDate(3);
LocalDate dateEchantillonnage = date == null
? null
: LocalDate.parse( new SimpleDateFormat("yyyy-MM-dd").format(date) );
修正日期总是为1970-01-01:
Date date = Date.valueOf("2015-07-01"); // You passed an int 2015-07-01 = 2007 :)
LocalDate dateEchantillonnage = date == null
? null
: LocalDate.parse( new SimpleDateFormat("yyyy-MM-dd").format(date) );
答案 2 :(得分:0)
以下代码适用于JDK 1.8.0_51下的UCanAccess 3.0.0:
public static void main(String[] args) {
String dbFilePath = "C:/Users/Public/UCanAccessDemo.accdb";
String connUrl = "jdbc:ucanaccess://" + dbFilePath;
try (Connection conn = DriverManager.getConnection(connUrl)) {
String sql = "SELECT Date1 FROM DateTest ORDER BY ID";
try (Statement st = conn.createStatement()) {
try (ResultSet rs = st.executeQuery(sql)) {
while (rs.next()) {
LocalDate dateEchantillonnage = null;
try {
dateEchantillonnage = rs.getDate(1).toLocalDate();
} catch (NullPointerException npe) {
// do nothing
}
System.out.println(dateEchantillonnage);
}
}
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
}