当 VB.NET 程序尝试使用 OleDBConnection 打开 MDB 文件时,显示“无法打开使用应用程序的早期版本创建的数据库”

2024-01-10

我在 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 文件)。

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

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

The error message is shown after the third line of code. enter image description here

您能否建议我的错误在哪里以及如何解决问题。

谢谢。


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

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

当不同的计算机安装了不同版本的 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) 版本都register“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)上打开 .mdb 文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 VB.NET 程序尝试使用 OleDBConnection 打开 MDB 文件时,显示“无法打开使用应用程序的早期版本创建的数据库” 的相关文章

  • MS Access:在列中搜索星号/星号

    我正在寻找一种方法来搜索包含字符串数据类型的列 问题是星号或星号是保留符号 以下查询无法正常工作 select from users where instr pattern 如何编写 Access 查询来搜索列中的星号 您可以使用方括号在
  • 使用 GIT 自动增加 AssemblyFileVersion

    好吧 我知道这可能不是传统的 但除此之外 我使用 AssemblyFileVersion 作为我的 构建名称 字符串 它的格式如下 File Version information for an assembly consists of t
  • 由于继承抽象类而禁用设计器?

    我有一个项目的解决方案 那个项目中有 40 或 50 种形式 我制作了 4 个基本形式 所有其他形式都可以继承 所有 4 个基本表单都继承 System Windows Forms Form 几乎 90 的形式继承了前 2 个基本形式之一
  • 如何使用 winforms 在 vb.net 中制作大型按钮网格(24x20 或类似)?

    我正在 vb net WinForms 中制作一个座位预订系统 我需要用户能够选择他们想要使用的座位并改变颜色 这样他们就可以知道它已选择 我开始尝试使用按钮 但 480 个按钮严重减慢了表单的加载时间 然后我尝试了在行 列中带有按钮的数据
  • LinqToSql 声明和实例化 DataContext 最佳实践?

    设置 DataContext 以便在扩展 LinqToSql 类中轻松访问方面的最佳实践是什么 例如 我的 dbml 中有一个 User 实体 我想向该类添加方法 如下所示 Partial Public Class User Public
  • 如何使用 C# 查询远程 MS ACCESS .mdb 数据库

    我正在尝试使用 C 查询 mote MS ACCESS 数据库 mdb 文件 将文件复制到本地计算机时可以成功查询它 我只想远程放置文件 所以我的客户端程序不包含原始数据 static string m path http www xyz
  • 如何创建未定义的循环计数

    我正在尝试创建一个程序 它将循环遍历所有字母 我想要例如显示aaaa then aaab to aaaz then aaba依此类推zzzz 问题是 如何让用户输入字母计数 这是我的代码 只有 3 个字母 Dim abc As String
  • 如何使用 VB.NET 打开受密码保护的共享网络文件夹?

    我需要在网络上打开受密码保护的共享文件夹才能访问 Access 97 数据库 如何打开文件夹并输入密码 在这里找到http www mredkj com vbnet vbnetmapdrive html http www mredkj co
  • vb.net HtmlAgilityPack 在 div 之后插入字符串

    我试图在 div 末尾直接插入一些我自己的 html 这个 div 里面有其他 div Dim HtmlNode As HtmlNode HtmlNode CreateNode span class Those were the frien
  • 使用 MS Access 链接表连接到 SQL Server 后端时是否可能发生 SQL 注入

    我一直在对此进行一些研究 但到目前为止还是一片空白 情况是这样的 我正在开发一个链接到 SQL Server 后端的 MS Access 前端 我在某种程度上使用 Access 中的链接表 表单访问 SQL DB 这样 当用户更新表单中的值
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • 从特定 IP 地址发送 SOAP 请求

    我有一个具有多个 IP 地址的系统 但我只能从一个 IP 地址发起 SOAP 请求 我如何在 VB NET 中获得它 我从来没有这样做过 看起来很复杂 首先 阅读自定义 ASMX 客户端代理的方法 http johnwsaunders3 w
  • 检查 DBNull 会引发 StrongTypingException

    我正在使用数据集从数据库中提取数据 一行中的一个字段是NULL 我知道这个 但是 以下 vb net 代码会抛出StrongTypingException 在数据集设计器中自动生成的 get SomeField 方法中 If Not IsD
  • 将签名位图转换为签名字符串(很奇怪的一个)

    基本上我需要将位图图像转换为字符串 但这不是常见的 困境在于该字符串由两部分组成 1 积分 2 线路 我需要将图像转换为由 分隔的两个部分 我得到的一个例子是 221A 221A270A270A25032503200720071716171
  • 选项卡索引不适用于面板中的控件?

    我有一个 vb net Windows 窗体 其中包含大约 15 个组合框和 15 个文本框 以及其他几个控件 所有这些TextBoxes and ComboBoxes位于面板中 原因是我需要根据用户选择 输入的内容来调整控件的可见属性 因
  • 为什么我应该关心压缩 MS Access .mdb 文件?

    我们分发一个使用 MS Access mdb 文件的应用程序 有人注意到 在 MS Access 中打开文件后 文件大小缩小了很多 这表明该文件是压缩的良好候选者 但我们不为用户提供执行此操作的方法 所以 我的问题是 这重要吗 我们关心吗
  • VB.NET 中的 TextChanged 事件

    我有两个基本文本框 比方说 A 和 B 我希望在一个文本框中输入内容以清除另一个文本框中的任何输入 例如 在 A 中键入 123 现在在 B 中键入 456 B 应包含 456 A 应为空 但是 我在 B 中收到 56 而 A 为空 似乎
  • 使用 DISTINCT 进行查询需要很长时间

    我正在使用 Microsoft Access 2003 我的项目中的一个表单需要很长时间才能向用户显示 这是适用的查询 SELECT DISTINCT tb KonzeptDaten DFCC tb KonzeptDaten OBD Cod
  • SQL存储过程执行时间差异

    我在 win form 应用程序中遇到奇怪的问题 我正在调用一个存储过程 并且执行大约需要 6 秒 此存储过程接受多个参数 包括一个输出参数 从应用程序级别我使用 Dim dt1 DateTime Now cmd ExecuteNonQue
  • 如何获取MS Access中表的列名? [复制]

    这个问题在这里已经有答案了 如何使用查询获取MS Access中表的字段名或列名 有人可以帮助我解决这个问题吗 就像如果我有一个名为 员工 的表 我需要单独获取员工的字段名称 id 姓名 工作状态等 而不是其记录 有什么方法可以得到这个吗

随机推荐