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



我使用jacess来更新Access表中的数据。另一个应用程序通过Microsoft Access数据库引擎(Jet)轮询数据。然而,它无法获得更新的数据,直到我强迫它关闭数据库并重新打开它。

有人知道Access数据库引擎如何检测jackess的数据更改吗?

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

有人知道Access数据库引擎如何检测jackess的数据更改吗?

它不。您的其他应用程序将不得不关闭并重新打开其访问数据库引擎(ACE/Jet)连接,以便它意识到jackess所做的更改。

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

即使

每个应用程序只写特定的表/列。写作中没有重叠/冲突

如果所有的表都位于同一个数据库文件中,

仍然有可能损坏。例如,如果jackess应用程序分配额外的数据页来保存新记录,并且Jet/ACE应用程序还需要分配额外的数据页来保存试图插入的其他记录,那么Jet/ACE应用程序将不知道"下一个可用页面"已经被jackess应用程序占用,并将尝试为自己分配相同的页面。在最好的情况下,结果将是某种错误;在最坏的情况下,这两个应用程序只会互相破坏对方的更改。

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

相关内容

  • 没有找到相关文章

最新更新