3

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

感谢您提前回复。

4

1 回答 1

4

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

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

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=yourPathToTheMDBFile.mdb;
Persist Security Info=False;

作为替代方案,您可以为 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 位驱动程序。
于 2012-12-14T13:44:08.897 回答