在Java中基于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 {

我正在开发一个简单的桌面Java应用程序,从MS Access数据库检索新添加的记录,并将这些记录放入Mysql,我将把它作为一项计划任务

我有一个JButton,当我单击该按钮时,今天在MS Access中创建的记录必须被提取并显示在我的JTable中,这就是目的

我面临的问题是试图从MS Access检索基于当前日期的记录。我使用Java8和“ucanaccess”驱动程序在我的应用程序和MS-Access之间建立连接。 我得到了日期不匹配的错误

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