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

使用C#连接带MDW与密码的MDB文件读取数据报错求助

问题:连接带MDW权限控制的MDB文件时执行查询失败

场景描述

已安装SQL Server 2019和MS Access,需连接客户提供的带密码、且关联MDW工作组文件的MDB数据库,用C# OleDb连接成功,但执行查询时报错。

连接代码

string pathToMdb = @"D:\test.mdb";
string pathToMdw = @"D:\test.mdw";
string userName = "JohnAdmin";
string userPassword = "11111111";

// 原代码存在变量名错误(userLogin应为userName)
string connectionString = $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={pathToMdb};Jet OLEDB:System Database={pathToMdw};User ID={userName};Password={userPassword};";

OleDbConnection connection = new OleDbConnection(connectionString);

连接状态显示为已打开,但执行以下查询代码时出错:

string strSQL = "SELECT * FROM Parts";
OleDbCommand command = new OleDbCommand(strSQL, connection);
OleDbDataReader reader = command.ExecuteReader(); // 报错位置
reader.Read();

错误信息

ODBC--connection to 'ODBC Driver 17 for SQL Server' failed.

补充尝试:给连接字符串添加Driver={{Microsoft Access Driver (*.mdb, *.accdb)}};时,出现错误:

找不到可安装的ISAM


错误含义

该错误说明OleDb连接在执行查询时错误地尝试调用SQL Server ODBC驱动,与当前要访问的Access MDB数据库完全不匹配,本质是驱动配置冲突、代码错误或环境兼容性问题导致的路由错误。


修复步骤

  1. 修正代码变量错误
    原连接字符串中使用了未定义的userLogin变量,需替换为定义好的userName,否则实际传递的用户名为空,会触发隐性权限错误。

  2. 解决Jet驱动的位数兼容性
    Microsoft.Jet.OLEDB.4.0是32位专属驱动:

    • 若C#项目为64位编译目标,需在项目属性中切换为x86平台;
    • 若必须使用64位,改用Microsoft.ACE.OLEDB.12.0驱动(需提前安装对应位数的Access Database Engine)。
  3. 移除冲突的Driver参数
    不要在OleDb连接字符串中添加Driver=参数,这是ODBC连接的写法,与OleDb的Provider=参数冲突,直接删除即可解决“找不到可安装的ISAM”错误。

  4. 验证MDW权限与路径

    • 确认MDW文件路径正确(建议用@符号避免转义问题,如@"D:\test.mdw");
    • 在MS Access中手动打开该MDB(通过MDW切换工作区、输入密码),确认能正常查询Parts表,排除权限或表名拼写错误。
  5. 改用ACE驱动(推荐)
    若Jet驱动存在兼容性问题,替换为ACE驱动的连接字符串:

    string connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={pathToMdb};Jet OLEDB:System Database={pathToMdw};User ID={userName};Password={userPassword};";
    

    注意:需安装对应位数的Microsoft Access Database Engine 2010可再发行组件,确保与项目编译位数一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:43:21