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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:45:12