我正在使用MS Access 2007数据库执行JavaAFX应用程序。我需要通过在日期之后进行过滤来从数据库中提取数据。
这项工作很好:
ResultSet rs = stat.executeQuery("SELECT * FROM Notification WHERE
postDate>=#2018-01-18# AND getDate<=#2019-02-18#");
但这不是:
private final static String GET_ALL =
"SELECT * FROM Notification WHERE postDate>=? AND getDate<=?";
public ArrayList<Notification> getAllNotification(LocalDate postDate, LocalDate getDate) {
PreparedStatement prepStmt = conn.prepareStatement(GET_ALL);
prepStmt.setDate(1, java.sql.Date.valueOf(postDate));
prepStmt.setDate(2, java.sql.Date.valueOf(getDate));
ResultSet rs = prepStmt.executeQuery();
}
我做错了或没有做的事情。 我当然使用的是版本4.0.3中的ucanaccess库。有什么建议或提示吗?
答案 0 :(得分:0)
在MS Access中,日期“#”用作标识符。您将必须在每个日期的开始和结束时明确指定#。您可以尝试一下,它应该可以工作。
"SELECT * FROM Notification WHERE postDate>= #?# AND getDate<= #?#";
为此,我将使用以下语法。
private String GET_ALL = "";
public ArrayList<Notification> getAllNotification(LocalDate postDate, LocalDate getDate) {
GET_ALL = "Select * FROM Notification WHERE postDate >= #" + postDate + "# AND getDate <= #" + getDate + "#";
PreparedStatement prepStmt = conn.prepareStatement(GET_ALL);
ResultSet rs = prepStmt.executeQuery();
}