我使用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应用程序占用,并将尝试为自己分配相同的页面。在最好的情况下,结果将是某种错误;在最坏的情况下,这两个应用程序只会互相破坏对方的更改。