x64应用程序访问mdb数据库

Meh*_*man 4 c# ms-access-2007 windows-7-x64

我有一个应用程序需要在x64平台下构建。我需要访问.mdb文件。我所说的访问是指插入、删除或更新数据库。我在使用 Jet OLE db 和 ODBC 驱动程序时遇到问题。对于 OLE db,它显示“Jet Oledb 未注册”。驱动程序和应用程序之间的 ODBC 平台不匹配。我可以在X86平台上进行这些操作。但在我的应用程序中,我被要求在 x64 平台下构建我的项目。任何人都可以为我提供任何解决方案。注意:我不应该使用任何第三个应用程序与 x64 应用程序和数据库进行通信。

感谢任何提前回复。

Ste*_*eve 5

您需要使用 Microsoft 的最新驱动程序 ACE
在这里您可以找到下载位

请注意为您的目标计算机下载正确的设置(x64 或 x86)此外,连接字符串应使用这些驱动程序,因此您可能需要这样的连接字符串

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=yourPathToTheMDBFile.mdb;
Persist Security Info=False;
Run Code Online (Sandbox Code Playgroud)

作为替代方案,您可以为 x86 平台构建应用程序,如果您没有与 64 位代码进行任何直接交互,它将像在 64 位操作系统中一样工作。此解决方案更可取,因为您可以使用旧的 JET.OleDb.4.0

让我简单解释一下 64/32 位操作系统、用于构建应用程序的平台和 32/64 位驱动程序的问题:

  • 您为 AnyCPU 平台构建应用程序 - 您的代码在 32/64 位系统中运行良好,JIT 编译器发出的代码将具有与来宾操作系统相同的位数。但是,您无法通过 64 位应用程序使用 32 位驱动程序,反之亦然。JET.OleDB.4.0 仅是 32 位。如果您针对 AnyCPU 进行编译并在 64 位上运行,则游戏结束。您需要 64 位驱动程序。
  • 您为 x86 平台构建应用程序- 您的代码在 32/64 位系统中运行良好,并且您可以使用 32 位驱动程序。当然,JIT 编译器发出的代码是 32 位,因此您不能在 64 位系统上使用 64 位驱动程序。