"无法打开使用以前版本的应用程序创建的数据库"显示当VB.NET程序尝试使用OleDBConnection打开MDB文件时

时间:2015-01-09 07:57:40

标签: vb.net ms-access oledb

我在32位Windows 7操作系统中使用VB.NET创建了一个软件。

它包含以下代码行:

 Dim cn As New OleDbConnection
 cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fileNameStr & ";Jet OLEDB:Database Password=xxxxxxx"
 cn.Open()

代码打开受密码保护的MDB文件(Microsoft Access文件)。

当我在计算机上运行该软件时,它运行良好。

但是,当在另一台计算机上测试时,会显示一条错误消息,指出“无法打开使用以前版本的应用程序创建的数据库。”

第三行代码后显示错误消息。 enter image description here

你能否指出我的错误在哪里以及如何解决问题。

谢谢。

1 个答案:

答案 0 :(得分:2)

  

当我在计算机上运行软件时,它运行良好。

     

但是,当在另一台计算机上测试时,会出现一条错误消息,提示"无法打开使用以前版本的应用程序创建的数据库。"

当不同的计算机安装了不同版本的Access数据库引擎时,可能会发生这种情况。具体来说,如果

,将出现错误消息
  • .mdb文件采用Access 97格式,
  • 该计算机具有Access 2013(或更高版本)Access数据库引擎。

Access 2013删除了对Access 97文件格式的支持。

如果您的连接字符串包含

,这可能会有些混乱
Provider=Microsoft.ACE.OLEDB.12.0

因为Access数据库引擎的Access 2007(12.0),Access 2010(14.0)和Access 2013(15.0)版本全部注册" 12.0&#34下的提供商;名称提供一定程度的向后兼容性。因此,对于任何具有Access 2007+的计算机,您可以指定

Microsoft.ACE.OLEDB.12.0

但你实际使用的是

Access 2007计算机上的

Microsoft.ACE.OLEDB.12.0
Access 2010计算机上的Microsoft.ACE.OLEDB.14.0
Access 2013计算机上的Microsoft.ACE.OLEDB.15.0

这就是为什么同一个第三方应用程序可以在一台计算机上打开.mdb文件(安装了Access 2007或2010)但在另一台计算机上没有打开(安装了Access 2013)。