You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

64位C#程序连接第三方Access数据库的适配问题求助

64位C#应用连接加密旧版Access数据库的解决办法

问题根源

  • Microsoft.Jet.OLEDB.4.0仅提供32位版本,64位应用无法调用,必须替换为ACE系列驱动。
  • 使用Microsoft.ACE.OLEDB.12.0报错,是因为ACE驱动默认不兼容Access 95/97这类旧格式数据库,且密码参数的搭配逻辑需要调整。

可用的64位连接字符串

针对加密的旧版Access数据库,使用以下连接字符串:

string connectionString = string.Format(
    "Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}; Jet OLEDB:Database Password={1}; Extended Properties=\"Jet OLEDB:Engine Type=4; Persist Security Info=False\";",
    yourDbPath, yourDbPassword
);
  • Engine Type参数调整:根据数据库实际版本修改:
    • Access 95 → Engine Type=3
    • Access 97 → Engine Type=4
    • Access 2000-2003 → Engine Type=5
  • 也可将Microsoft.ACE.OLEDB.12.0替换为Microsoft.ACE.OLEDB.16.0(对应Office 2016及后续版本),兼容性更佳。

必备前置操作

  1. 安装64位ACE驱动:
    • 未安装32位Office的用户,直接安装官方提供的64位Microsoft Access Database Engine redistributable包。
    • 已安装32位Office的用户,直接安装会产生冲突,需通过命令行被动安装:
      msiexec /i AccessDatabaseEngine_X64.exe /passive
      
  2. 设置项目目标平台为x64:避免使用Any CPU模式,防止64位系统下应用自动切换为32位运行,导致驱动调用失败。

额外排查点

  • 验证64位ACE驱动注册状态:打开64位命令提示符,执行reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ACE"(对应16.0版本),有返回结果即代表注册成功。
  • 若仍出现密码相关错误,可尝试将Jet OLEDB:Database Password={1}替换为Password={1},部分旧版ACE驱动对参数解析存在差异。

内容的提问来源于stack exchange,提问作者CM99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 13:35:13