ucanaccess 系统超载,怎么办?

Posted

技术标签:

【中文标题】ucanaccess 系统超载,怎么办?【英文标题】:ucanaccess is overloading the system, What to do? 【发布时间】:2014-09-29 09:39:54 【问题描述】:

我的应用程序背后的想法是通过将整个 .mdb 文件下载到客户端,记录他们所做的更改并每天上传一次这些更改来消除客户对我的数据库(采用 .mdb 格式)的直接访问每个客户。 我遇到的问题是在使用 ucanaccess 时,它似乎每次调用 getDatabase2() 时都会加载整个数据库。在控制台中,这是我无限次获得的,直到应用程序加载。 (这将花费很多时间)。 反正有没有让 ucanaccess 只做桥接的东西(只是交易)?或者也许我使用了错误的方法? .mdb 文件大小为 50Mo,最多包含 80-100k 个条目。 我正在使用 Windows XP、Eclipse、Java 7。 getDataBase的代码如下

private static Connection getDatabase2() throws Exception


    String url="jdbc:ucanaccess:////Jv1kbafap001/teams/Medic/database.mdb;memory=false";
    String user="admin";
    String pass="";
    return DriverManager.getConnection(url,user,pass);

【问题讨论】:

【参考方案1】:

在下一个ucanaccess版本(2.0.9.1)中,专门针对memory=false的情况,加载时间(第一次连接的时间)会明显减少。 支持部分加载超出了我的计划,因为我认为已经有一个解决方案:您只需使用另一个“过滤器”mdb,它只指向您的事务所需的表,将它们链接为外部资源(在换句话说,它们必须用作链接表)。 请注意,您可以使用 remap 连接参数来覆盖原始外部数据库路径。

【讨论】:

感谢有关加载时间的提示。但是,我无法理解“重新映射连接参数以覆盖原始外部数据库路径”?你的意思是url中的不同设置??编辑:好主意(过滤 mdb 和链接表)我会继续的 我不知道你是否真的需要这个(它很有用,例如替换unix/linux os'上的链接数据库路径),但语法是:jdbc:ucanaccess:// ;remap=| 例如jdbc:ucanaccess:///opt/filter.mdb;remap=c:/db/database.mdb|/opt/database.mdb;memory=false 啊,好吧,我认为这是在 Windows 下使用的并行方式,无论如何,谢谢你设置链接数据库的想法确实减少了 25% 的加载时间,而不是检查它刚刚捕获的整个数据库链接的表格 好的,2.0.9.1 即将推出。

以上是关于ucanaccess 系统超载,怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UCanAccess 在两个表之间创建关系?

UCANACCESS_HOME 系统变量

Squirrel SQL - UCANACCESS_HOME 系统变量未定义

Spring Boot / Data 通过 jdbc UCanAccess 连接到 MS Access

电脑经常忽然卡屏不动然后蓝屏

JDBC 调用中的参数无效:参数索引超出范围(使用 Ucanaccess)