现在我有 64 位计算机,无法连接到我的 office 2007 mdb 数据库

Posted

技术标签:

【中文标题】现在我有 64 位计算机,无法连接到我的 office 2007 mdb 数据库【英文标题】:Can't connect to my office 2007 mdb database now that i have 64bit computer 【发布时间】:2011-01-20 12:39:21 【问题描述】:

我在 Visual Studio 2008 的 vb.net 中有一个应用程序。

在我的旧电脑 vista 32 位系统和 Microsoft Office 2007 中,我能够连接到 access 数据库(mdb 文件)

现在我买了一台装有 windows 7 64bit 的新电脑。

我安装了 Microsoft Office 2007(与以前的计算机相同)和 Visual Studio 2008。

现在的问题是我无法从我的应用程序连接到 mdb,我得到了一个 System.Data.dll 中发生了“System.Data.OleDb.OleDbException”类型的第一次机会异常

我为 Microsoft Office 2007 安装了 Access Database Engine,但没有修复它。 当我尝试为 Microsoft Office 2010 安装 Access Database Enginge 时,它​​表示无法安装 x64 版本,因为我的系统中有 32 位 Office。

我知道,第一个建议是卸载 Microsoft Office 2007 并安装 2010,但是还有其他选择吗?我不想用2010,除非是绝对必要的。

重要提示: 如果我编译我的应用程序,然后在我的旧计算机(或其他 32 位系统)中运行它,它运行完美,所以它不是编码问题。只是一个库 32/64 位问题。

【问题讨论】:

【参考方案1】:

找到 ACE 提供程序的 x64 版本的下载确实是不可能的。这似乎是故意的。在解决方案资源管理器窗口中选择您的 EXE 项目。项目+属性,编译选项卡,向下滚动,高级编译选项。将目标 CPU 更改为“x86”。

您在调试代码时总是需要该设置,它可以在 64 位机器上启用“编辑 + 继续”并避免一些 64 位特定问题。当您依赖任何 32 位非托管代码时,请为 Release 构建保留该设置,就像您在本例中所做的那样。

【讨论】:

你好汉斯,是的,这是解决方法,但让我分享一个关于我最终解决的问题的“有趣”故事。我之前在其他网站上阅读过您的解决方案,但没有运气。我也在这里发帖希望有人能帮助我。在我的情况下,问题(在我为 x86 编译之后)是我只有一个硬盘,当然有 Windows 7。所以,在 Visual Studio 中运行我的应用程序我没有具有“管理员权限”,因此我可以访问该硬盘上的 mdb 文件。将 mdb 移动到我的 USB 记忆棒最终解决了问题。 omg 5 小时,我正在重新安装 access jet 驱动程序等。 你说的这个例外肯定是合理的吗?即使它只是一个错误代码。下次遇到类似问题时,请务必做好记录。 这就是我得到的“System.Data.dll 中发生了‘System.Data.OleDb.OleDbException’类型的第一次机会异常”。但是当我从我的代码更改路径示例时:从 c:\test\database.mdb 到 e:\test\database.mdb(相同的文件,记住 c 是操作系统驱动器,e 是 USB 记忆棒)它可以工作。也许我错过了什么? 查看您的异常处理。确保您没有在代码中捕获此异常并生成隐藏真正问题的错误消息。喜欢catch(Exception) MessageBox.Show("Could not open database"); 你好,汉斯,我决定查看我的代码,看看是否有任何尝试/捕获可以隐藏真正的问题。虽然我有一种很好的感觉,我的代码终于可以工作了,但我放松了,开始调试(是的,放松和调试可以共存),你猜怎么着?我发现了真正的问题。正如我所描述的,我搬到了一台新电脑上。其中有 1 个驱动器,我开发应用程序的旧电脑有 2 个驱动器...... MDB 文件的路径是硬编码的,指向 D:\folder\database.mdb.... 在我的新“64 位系统”中” 使用“32 位 Jet 驱动程序”,只有 C: 这就是我放置 \folder\database.mdb 的位置【参考方案2】:

检查:http://social.answers.microsoft.com/Forums/en-US/addbuz/thread/13f61a74-3bae-430f-8f3b-66182e5b8f47

【讨论】:

【参考方案3】:

尝试将您的数据库导出为 Microsoft Access 2007 格式 (*.accdb)。 然后,将连接字符串更改为:

oleDbConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path + ";";

希望对你有帮助。

【讨论】:

Aw 它不起作用...相同的异常 System.Data.dll 中发生了“System.Data.OleDb.OleDbException”类型的第一次机会异常,谢谢您的帮助 Horse Pen: )

以上是关于现在我有 64 位计算机,无法连接到我的 office 2007 mdb 数据库的主要内容,如果未能解决你的问题,请参考以下文章

R中的H2O错误-无法连接到本地主机

在 Win XP 64 位上,无法连接到 XAMPP 下的本地 apache 安装。帮助!

64 位 DBeaver 无法连接到 ODBC 源 - “参数编号超出范围”。

将 32 位 VB.Net 连接到 64 位 Access .ACCDB

从 64 位 php 网站强制连接到 32 位访问数据库

将 64 位 Java 应用程序连接到 32 位 ODBC 驱动程序