Ucanaccess太慢了

时间:2016-04-27 08:03:07

标签: java ms-access ucanaccess jackcess

我已经正确添加了所有必要的JARS:

  • Ucanaccess 3.0.4
  • 公地琅-2.6
  • 共享记录-1.1.1
  • hsqldbd
  • jackcess-2.1.3

我的数据库是100MB。虽然只使用Jacksess,但相同的查询需要4-5秒,而这个需要大约1-2分钟。我做了一些研究,发现Ucanaccess反映了整个数据库。我怎么能禁用它?还是有必要吗?

我也尝试过参数(memory,singleConnection,skipIndexes),但它没有改变任何东西。

我必须使用UcanAccess,因为我想使用JasperReports。为此,我需要一个有效的连接。

我的代码:

        try {
        Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        String connectionURL = "jdbc:ucanaccess://P:/myDatabase.accdb";
        Connection conn = DriverManager.getConnection(connectionURL, "", "");
        Statement stmt = conn.createStatement();

        String query =
                "Select * from REQ_ACQ_ACQUISITIONS";


        ResultSet rs = stmt.executeQuery(query);
        while ( rs.next() ) {
            int numColumns = rs.getMetaData().getColumnCount();
            for ( int i = 1 ; i <= numColumns ; i++ ) {
                if (i > 1) System.out.print(",  ");
                String columnValue = rs.getString(i);
                System.out.print(columnValue + " " + rs.getMetaData().getColumnName(i));
            }
            System.out.println("");
        }
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

1 个答案:

答案 0 :(得分:3)

请注意,这不是真正的“连接时间”,而是整个JVM生命中第一次连接的时间。所以这是一个启动时间,就像数据库启动时间。以下所有连接都是明确的。有几个方法可以大大减少第一次连接的时间。最简单的方法是构建一个过滤器数据库,作为外部表,链接报告所需的唯一表。