如何解决Access DAO抛出Access 97文件的COMException
我们正在使用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
类型:System.Runtime.InteropServices.COMException
消息:无法打开使用先前版本的数据库创建的数据库 您的应用程序。
StackTrace:位于 Microsoft.Office.Interop.Access.Dao.DBEngineClass.OpenDatabase(String 名称,对象选项,对象只读,对象连接)
我尝试指定DefaultType,但结果相同
engine.DefaultType = (int)WorkspaceTypeEnum.dbUseJet;
我认为该库的版本不支持Access 97文件,但有时它会处理文件。即使失败,第二次打开同一组文件的尝试总是总是成功的。因此,我想知道是否存在这些不一致的特定原因,以及是否有人有解决这些不一致的经验。
解决方法
版本15.x(例如ACEDAO.DLL)对应于Access_2013,并且Access_2013 完全放弃了对Access_97文件格式的支持。如果OpenDatabase
有时有效,有时会抛出
无法打开使用先前版本的应用程序创建的数据库。
那么前者只是just幸。 (在尝试禁用Access_97格式时,开发人员显然错过了一两个代码路径。)
TL; DR –不要指望能够在Access_2013 +中使用Access_97文件。将Access_97文件转换为您的Access版本支持的格式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。