首页 > 解决方案 > .NET Core 和 MS Access“迁移”连接

问题描述

我将 .NET Core 2.1 用作 Web 应用程序,需要设置一个页面以将旧的.mdbAccess 文件迁移到新的 SQL Server 数据库中。它不是一个单一的 Access 数据库......它有数百个用户所有者数据库。

我安装了这个:AccessDatabaseEngine_X64.exe

这个 nuget 安装:

using System.Data.Odbc;

ODBC32 和 ODBC64 中列出了 32/64 位访问驱动程序,但据我了解,.NET Core 仅是 64 位。

但是......我无法克服这个引发异常的错误

connection.Open();

OdbcException: 错误 [IM002] [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

我的代码:

public MigrateAccessDb(List<string> Files)
{
    //string file = Files[0];
    string file = @"D:\test.mdb";
    string connectionString = "Driver={Microsoft Access Driver(*.mdb, *.accdb)}; Dbq=" + file;
    //string connectionString = String.Format("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = {0}; Persist Security Info = False; ", file);
    //string connectionString = String.Format("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Persist Security Info = False;", file);

    string queryString = "SELECT * FROM Configs";

    using (OdbcConnection connection = new OdbcConnection(connectionString))
    {
        OdbcCommand command = new OdbcCommand(queryString, connection);

        connection.Open();

做了一个简单的.net核心控制台应用程序..同样的错误: 在此处输入图像描述

循环多个连接字符串 在此处输入图像描述

标签: c#ms-access.net-coreodbc

解决方案


空格在 ODBC 连接字符串中很重要。

仅当您没有具有匹配名称和匹配位数的驱动程序时,才会出现未找到数据源名称且未指定默认驱动程序错误。

Access 的正确 ODBC 连接字符串是:

"Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq="+ file;

Driver你在和之间缺少一个空格(

请注意,并不真正支持同时安装 32 位版本和 64 位版本的 Access 数据库引擎,而且往往会导致麻烦。我知道空间是个问题,但您的确切设置中可能还有其他问题。


推荐阅读