代码之家  ›  专栏  ›  技术社区  ›  kenyu73

.NET核心和MS访问“迁移”连接

  •  0
  • kenyu73  · 技术社区  · 7 年前

    我使用.NET Core 2.1作为Web应用程序,需要设置一个页面来迁移旧版本 .mdb 将文件访问到新的SQL Server数据库中。它不是一个单一的访问数据库…它的数百个用户所有者数据库。

    我已经安装了这个: AccessDatabaseEngine_X64.exe

    此nuget安装:

    using System.Data.Odbc;
    

    32/64位访问驱动程序列在ODBC32和ODBC64中,但是.NET核心仅从我理解的角度来看是64位的。

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

    connection.Open();
    

    ODBCException:错误[IM002][Microsoft][ODBC驱动程序管理器]找不到数据源名称,未指定默认驱动程序

    我的代码:

    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核心控制台应用程序。同样的错误: enter image description here

    通过多个连接字符串循环 enter image description here

    2 回复  |  直到 7 年前
        1
  •  1
  •   Erik A    7 年前

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

    这个 找不到数据源名称,未指定默认驱动程序 只有在没有具有匹配名称和匹配位的驱动程序时才会发生错误。

    正确的用于访问的ODBC连接字符串是:

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

    你错过了一个空间 Driver (

    请注意,不支持同时安装32位版本和64位版本的Access数据库引擎,这可能会导致问题。我知道空间有问题,但在你的确切设置中可能还有其他人。

        2
  •  0
  •   Djordje Nedovic CriGoT    7 年前

    你试过这个吗?

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\myAccessFile.mdb;Persist Security Info=False;
    

    Reference

    推荐文章