我正确地添加了所有必要的罐子:
我的数据库是100 My。当只使用Jacksess时,相同的查询需要4-5秒,而这个查询大约需要1-2分钟。我做了一些研究,发现Ucanaccess反映了整个数据库。我怎么能让它失效呢?还是有必要?
我也尝试了参数(内存、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();
}发布于 2016-04-27 14:51:38
注意,这并不是真正的“连接时间”,而是整个JVM生命中第一个连接的时间。因此,这是一个启动时间,类似于数据库启动时间。以下所有的联系都将是即席的。有几种方法可以戏剧性地减少第一次连接的时间。最简单的方法是构建过滤器数据库,将报表所需的唯一表作为外部表链接起来。
发布于 2021-09-16 05:39:10
对我来说,我也遇到了类似的问题,但主要是因为在我的代码中,在运行查询之后,我从未关闭过连接。
https://stackoverflow.com/questions/36883855
复制相似问题