Jet / ACE连接未检测到Java代码的数据更改

问题描述 投票:1回答:2

我正在使用Jackcess来更新Access表中的数据。另一个应用程序是通过Microsoft Access数据库引擎(Jet)轮询数据。但是,在我强制关闭数据库并重新打开数据库之前,它无法获取更新的数据。

有谁知道Access数据库引擎如何通过Jackcess检测数据更改?

ms-access jet ucanaccess jackcess
2个回答
0
投票

经过一番研究,我发现Jackcess是4型数据库驱动程序。它直接读/写数据库文件。 JETS无法检测到我的4型驱动程序所做的更改。为了使用它,我需要一个JDBC-ODBC桥,类型1数据库驱动程序。我必须从Java 7中提取一些代码并将它们放入Java 8.这仅适用于32位Java,因为JETS只有32位。


0
投票

有谁知道Access数据库引擎如何通过Jackcess检测数据更改?

它没有。您的其他应用程序必须关闭并重新打开其Access数据库引擎(ACE / Jet)连接,以便它了解Jackcess所做的更改。

请注意,如果其他(ACE / Jet)应用程序还需要对Access数据库进行更改,则会产生影响。这两个应用程序将直接相互独立地写入Access数据库文件,在这种情况下,文件很可能会被破坏。

即使

每个应用程序只写入某些表/列。写作中没有重叠/冲突。

如果所有表都驻留在同一个数据库文件中,则仍有可能出现损坏。例如,如果Jackcess应用程序分配一个额外的数据页来保存新记录,并且Jet / ACE应用程序还需要分配一个额外的数据页来保存它试图插入的其他记录,那么Jet / ACE应用程序不知道Jackcess应用程序已经采用了“下一个可用页面”,并试图为自己分配相同的页面。充其量,结果会出现某种错误;在最坏的情况下,这两个应用程序只会破坏彼此的变化。

如果这两个应用程序确实写入完全独立的表组而没有重叠,则可以通过将两组表保存在两个单独的.accdb文件中来减轻损坏的危险,使用链接表允许应用程序“查看”所有在一个地方的表格。

© www.soinside.com 2019 - 2024. All rights reserved.