c# - .NET Core 和 MS Access“迁移”连接
问题描述
我将 .NET Core 2.1 用作 Web 应用程序,需要设置一个页面以将旧的.mdb
Access 文件迁移到新的 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();
解决方案
空格在 ODBC 连接字符串中很重要。
仅当您没有具有匹配名称和匹配位数的驱动程序时,才会出现未找到数据源名称且未指定默认驱动程序错误。
Access 的正确 ODBC 连接字符串是:
"Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq="+ file;
Driver
你在和之间缺少一个空格(
请注意,并不真正支持同时安装 32 位版本和 64 位版本的 Access 数据库引擎,而且往往会导致麻烦。我知道空间是个问题,但您的确切设置中可能还有其他问题。
推荐阅读
- html - 填充行之间的大间隙
- python - Python中的构造函数和方法有什么区别?
- sql-server - SQL Server 身份验证无法从远程工作
- regex - 如何在正则表达式中匹配以下模式?
- c# - 搜索包含单词的列表的数据结构比 Linq 的实现更快
- c - 修改C中VsCode的缩进
- spring-boot - Elasticsearch 分析器在创建时工作抛出 Springdata 但在直接从 Postman/curl 创建时失败
- azureservicebus - 关于 Azure 服务总线中的关联筛选器/SQL 筛选器
- python - 如何从 Car 类到 Order 类获取价值
- c++ - 如何获取充满输入的数组的长度