【问题标题】:x64 Application Accessing mdb databasex64 应用程序访问 mdb 数据库
【发布时间】:2023-03-18 14:20:01
【问题描述】:

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

感谢您提前回复。

【问题讨论】:

    标签: c# ms-access-2007 windows-7-x64


    【解决方案1】:

    您需要使用 Microsoft 最新的驱动程序 ACE
    Here you can find the download bits

    注意为您的目标机器下载正确的集合(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 编译器发出的代码将具有 来宾操作系统的位数相同。但是,您不能使用 32 位驱动程序 64 位应用程序,反之亦然。 JET.OleDB.4.0 只有 32 位。游戏结束如果 您为 AnyCPU 编译并在 64 位上运行。您需要 64 位驱动程序。
    • 您为 x86 平台构建应用程序 - 您的代码在 32/64 位系统,您可以使用 32 位驱动程序。当然是代码 JIT 编译器发出的是 32 位,因此您不能使用 64 位 64 位系统上的驱动程序。

    【讨论】:

    • 您是否建议我需要卸载 Office 2007(32 位)应用程序
    • 那我不明白你的意思。该应用程序将部署在另一台具有 64 位环境的机器上,还是您的机器具有 64 位环境?
    • 我的机器是 64 位的,但是我使用的是 32 位的 Office,我需要安装 accessengine_x64.exe。它无法安装。所以问题就出现了。但是感谢您的解决方案,如果我使用的是 64 位办公软件或我的电脑中没有安装 32 位办公软件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多