VS2022连接Access数据库报错:ODBC驱动管理器找不到数据源
问题解决方案
核心错误修正:连接对象与连接字符串不匹配
你代码里的关键问题是用OdbcConnection(ODBC连接对象)却传入了OLEDB格式的连接字符串,这直接导致驱动找不到。
正确写法(二选一)
方案1:改用OLEDB连接对象
你的连接字符串是OLEDB格式,对应要用OleDbConnection(需先引用System.Data.OleDb命名空间):
private void SurveyYearsForm_Load(object sender, EventArgs e) { // 修正连接字符串的格式(补全引号) string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\....\watch.accdb;"; using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); // 在这里编写数据读取逻辑 } }
方案2:改用ODBC格式的连接字符串
如果坚持用OdbcConnection,需要换成ODBC标准格式的连接字符串:
private void SurveyYearsForm_Load(object sender, EventArgs e) { string connectionString = @"Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=C:\Users\....\watch.accdb;"; using (OdbcConnection connection = new OdbcConnection(connectionString)) { connection.Open(); // 在这里编写数据读取逻辑 } }
其他排查要点
- 平台位数匹配:VS2022默认项目可能是「Any CPU但优先32位」,而你安装的是64位ACE驱动。可以在项目属性→生成→平台目标里设置为x64,确保项目运行位数和驱动一致。
- 驱动版本差异:你提到的ACEODBC.DLL版本与Access版本略有差异,一般不影响连接;如果上述修正后仍报错,可重新安装对应版本的Microsoft Access Database Engine(选x64版本,若提示已有32位组件,用静默模式安装:
AccessDatabaseEngine_X64.exe /quiet)。 - VS服务器资源管理器的差异:服务器资源管理器用OLEDB驱动连接,所以你复制的连接字符串是OLEDB格式,自然无法直接给
OdbcConnection使用,这就是IDE能正常连接但代码报错的原因。
内容的提问来源于stack exchange,提问作者chrisc
相关产品推荐
相关产品推荐

