在Java中基于MS Access中的日期执行搜索
我正在开发一个简单的桌面Java应用程序,从MS Access数据库检索新添加的记录,并将这些记录放入Mysql,我将把它作为一项计划任务 我有一个JButton,当我单击该按钮时,今天在MS Access中创建的记录必须被提取并显示在我的JTable中,这就是目的 我面临的问题是试图从MS Access检索基于当前日期的记录。我使用Java8和“ucanaccess”驱动程序在我的应用程序和MS-Access之间建立连接。 我得到了日期不匹配的错误在Java中基于MS Access中的日期执行搜索,java,date,datetime,ms-access,ucanaccess,Java,Date,Datetime,Ms Access,Ucanaccess,我正在开发一个简单的桌面Java应用程序,从MS Access数据库检索新添加的记录,并将这些记录放入Mysql,我将把它作为一项计划任务 我有一个JButton,当我单击该按钮时,今天在MS Access中创建的记录必须被提取并显示在我的JTable中,这就是目的 我面临的问题是试图从MS Access检索基于当前日期的记录。我使用Java8和“ucanaccess”驱动程序在我的应用程序和MS-Access之间建立连接。 我得到了日期不匹配的错误 try {
try {
// TODO add your handling code here:
SimpleDateFormat objSDF = new SimpleDateFormat("dd-mm-yyyy");
java.util.Date dt_1 = objSDF.parse("06-12-2019");
//String date6 = objSDF.format(dt_1);
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String msAccDB = "C:/Users/t1/Dropbox/P2002/p2002.mdb";
String dbURL = "jdbc:ucanaccess://" + msAccDB;
DefaultTableModel model1 = new DefaultTableModel();
jTable1.setModel(model1);
model1.setColumnIdentifiers(new Object[]{"ID", "Datum", "Summe"});
Connection li = DriverManager.getConnection(dbURL);
PreparedStatement pstm = li.prepareStatement("SELECT ID,Datum,Summe FROM Bes WHERE Datum = #"+dt_1+"#");
ResultSet Rs = pstm.executeQuery();
while (Rs.next()) {
model1.addRow(new Object[]{Rs.getInt(1), Rs.getString(2), Rs.getDouble(3)});
}
li.close();
} catch (ClassNotFoundException cnfe) {
System.out.println(cnfe);
} catch (SQLException sqle) {
System.out.println(sqle);
}
} catch (ParseException ex) {
Logger.getLogger(GetRecords.class.getName()).log(Level.SEVERE, null,ex);
}***
我建议您不要使用
SimpleDateFormat
和Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。而是使用来自的LocalDate
和DateTimeFormatter
。一个可能的解释是,您的UCanAccess版本还不支持JDBC版本4.2。这是指定可以传递LocalDate
(以及java.time中的其他类型)的版本。不过我有点奇怪,我认为现在所有的驱动程序都符合JDBC 4.2。UCanAccess 4.0.4不支持java.time
。我已将所需的更改提交到as 5.0版,但尚未发布。@OleV.V.-是的,这可能是目前最好的办法。@OleV.V.-UCanAccess 5.0.0今天发布。它支持java.time.LocalDateTime
。