"Cannot open a database created with a previous version of your application" 显示 VB.NET 程序何时尝试使用 OleDBConnection 打开 MDB 文件

"Cannot open a database created with a previous version of your application" shows when VB.NET program tried to open a MDB file using OleDBConnection

我在 32 位 Windows 7 OS 中使用 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 文件)。

当我运行我电脑里的软件时,它运行良好。

但是在另一台电脑上测试时,出现错误提示"Cannot open a database created with a previous version of your application."

错误信息显示在第三行代码之后。

你能指出我的错误在哪里以及我如何解决这个问题吗?

谢谢。

When I run the software in my computer, it works well.

However, when it is tested in another computer, an error message appears saying "Cannot open a database created with a previous version of your application."

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

就会出现错误信息
  • .mdb 文件为 Access 97 格式,并且
  • 该计算机具有 Access 数据库引擎的 Access 2013(或更高版本)。

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

如果您的连接字符串包含

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

因为 Access 2007 (12.0)、Access 2010 (14.0) 和 Access 2013 (15.0) 版本的 Access 数据库引擎都注册“12.0”下的提供程序名称以提供一定程度的向后兼容性。因此,对于任何装有 Access 2007+ 的给定机器,您可以指定

Microsoft.ACE.OLEDB.12.0

但你实际使用的是

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

这就是为什么同一个第三方应用程序可以在一台机器(安装了 Access 2007 或 2010)上打开 .mdb 文件,但不能在另一台机器(安装了 Access 2013)上打开的原因。

我试图打开 2006 年保存的 *.mdb。我尝试了各种方法,但使用 SQL Server Management Studio 18.9.2 (SSMS) 导入数据是可行的方法为了我。这是我所做的(假设您可以访问 SQL 服务器和那里的数据库):

  • 右键单击要导入 table(s) 的数据库
  • Select 任务 -> 导入数据
  • 对于数据源select Microsoft Access(Microsoft Jet 数据库引擎)
  • 文件名 - 浏览到 *.mdb 文件并select它并单击打开
  • 点击下一步
  • 目的地:SQL 服务器本机客户端 11.0
  • Select 服务器名称(这可能已经正确设置)
  • 在身份验证框中设置您的服务器需要的任何身份验证
  • 确保在数据库下拉列表中select输入了正确的数据库(可能已经正确)
  • 点击下一步
  • 保留设置“从一个或多个 table 或视图复制数据”
  • 点击下一步
  • Select 您要导入的 table(s)
  • 点击下一步
  • 点击下一步
  • 点击完成 那对我有用。在 SQL 服务器中拥有它后,您可以根据需要对其进行操作。