现在我有 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 数据库的主要内容,如果未能解决你的问题,请参考以下文章
在 Win XP 64 位上,无法连接到 XAMPP 下的本地 apache 安装。帮助!
64 位 DBeaver 无法连接到 ODBC 源 - “参数编号超出范围”。