Access DAO 为 Access 97 文件抛出 COMException
Access DAO throws COMException for Access 97 files
我们正在使用 Microsoft.Office.Interop.Access.Dao(版本 15.0.0.0)库来访问 Microsoft Access 文件中的信息,因为它允许我们实现其他库所缺乏的一些功能(例如重新链接数据库表的能力)。
这对除 Access 97 .mdb 文件之外的所有类型的 Access 文件都非常有效。我们在调用 OpenDatabase 方法时会定期出现异常。
var engine = new DBEngine();
var db = engine.OpenDatabase(path);
它会定期抛出 COMException
Type: System.Runtime.InteropServices.COMException
Message: Cannot open a database created with a previous version of
your application.
StackTrace: at
Microsoft.Office.Interop.Access.Dao.DBEngineClass.OpenDatabase(String
Name, Object Options, Object ReadOnly, Object Connect)
我试过指定DefaultType,结果还是一样
engine.DefaultType = (int)WorkspaceTypeEnum.dbUseJet;
我认为该库的版本不支持 Access 97 文件,但有时它会处理文件。即使失败,第二次尝试打开同一组文件几乎总是成功的。所以我想知道这些不一致是否有特定原因,是否有人有解决这些问题的经验。
Access 数据库引擎 (ACE) 组件的 15.x 版本(例如 ACEDAO.DLL)对应于 Access_2013,Access_2013 完全 放弃了对 Access_97 文件格式的支持。如果 OpenDatabase
有时有效,有时会抛出
Cannot open a database created with a previous version of your application.
那么前者只是侥幸而已。 (在试图禁用 Access_97 格式时,开发人员显然错过了一两个代码路径。)
TL;DR – 不要指望能够将 Access_97 文件与 Access_2013+ 一起使用。将 Access_97 文件转换为您的 Access 版本支持的格式。
我们正在使用 Microsoft.Office.Interop.Access.Dao(版本 15.0.0.0)库来访问 Microsoft Access 文件中的信息,因为它允许我们实现其他库所缺乏的一些功能(例如重新链接数据库表的能力)。 这对除 Access 97 .mdb 文件之外的所有类型的 Access 文件都非常有效。我们在调用 OpenDatabase 方法时会定期出现异常。
var engine = new DBEngine();
var db = engine.OpenDatabase(path);
它会定期抛出 COMException
Type: System.Runtime.InteropServices.COMException
Message: Cannot open a database created with a previous version of your application.
StackTrace: at Microsoft.Office.Interop.Access.Dao.DBEngineClass.OpenDatabase(String Name, Object Options, Object ReadOnly, Object Connect)
我试过指定DefaultType,结果还是一样
engine.DefaultType = (int)WorkspaceTypeEnum.dbUseJet;
我认为该库的版本不支持 Access 97 文件,但有时它会处理文件。即使失败,第二次尝试打开同一组文件几乎总是成功的。所以我想知道这些不一致是否有特定原因,是否有人有解决这些问题的经验。
Access 数据库引擎 (ACE) 组件的 15.x 版本(例如 ACEDAO.DLL)对应于 Access_2013,Access_2013 完全 放弃了对 Access_97 文件格式的支持。如果 OpenDatabase
有时有效,有时会抛出
Cannot open a database created with a previous version of your application.
那么前者只是侥幸而已。 (在试图禁用 Access_97 格式时,开发人员显然错过了一两个代码路径。)
TL;DR – 不要指望能够将 Access_97 文件与 Access_2013+ 一起使用。将 Access_97 文件转换为您的 Access 版本支持的格式。