Access DAO为Access 97文件抛出COMException



我们使用的是Microsoft。办公室Interop。通道Dao(15.0.0.0版本(库,用于访问Microsoft Access文件中的信息,因为它允许我们实现其他库所缺乏的一些功能(例如重新链接数据库表的能力(。这适用于除Access 97.mdb文件之外的所有类型的Access文件。在调用OpenDatabase方法时,我们会周期性地得到异常。

var engine = new DBEngine(); 
var db = engine.OpenDatabase(path);

它周期性地抛出COMException

类型:系统。运行时。InteropServices。COMException

消息:无法打开使用以前版本的创建的数据库您的申请。

StackTrace:位于微软办公室Interop。通道道。DBEngineClass。OpenDatabase(字符串名称、对象选项、对象只读、对象连接(

我试图指定DefaultType,但结果是相同的

engine.DefaultType = (int)WorkspaceTypeEnum.dbUseJet;

我认为此库的版本不支持Access 97文件,但有时它会处理文件。即使失败了,打开同一组文件的第二次尝试几乎总是成功的。因此,我想知道这些不一致是否有具体的原因,以及是否有人有解决这些问题的经验。

版本15.x的Access数据库引擎组件(如ACEDAO.DLL(对应于Access_2013,Access_2013完全放弃了对Access_97文件格式的支持。如果OpenDatabase有时工作,而在其他时间抛出

无法打开使用以前版本的应用程序创建的数据库。

那么前者只是侥幸。(在试图禁用Access_97格式时,开发人员显然错过了一两条代码路径。(

TL;DR–不要指望能够将Access_97文件与Access_2013+一起使用。将Access_97文件转换为您的Access版本所支持的格式。

最新更新