c# - 如何在 Visual Studio 2019 和 .NET Core 3.0 中使用 ODBC 连接?

标签 c# odbc .net-core-3.0

我使用 Visual Studio Community 2019 16.3.1。

我想在 .NET Core 3.0 项目中使用 ODBC 连接(示例适用于 .NET Framework 4.x):

using System.Data.Odbc;

using (OdbcConnection connection = new OdbcConnection(odbcConnectionString))
{
    using (OdbcCommand command =  new OdbcCommand(sql, connection)) 
    {
        command.CommandType = System.Data.CommandType.Text;
        command.CommandTimeout = 0;
        command.Connection.Open();
        string value = Convert.ToString(command.ExecuteScalar());
        return value;
    }
}

我收到错误消息:

错误 CS1069
在命名空间“System.Data.Odbc”中找不到类型名称“OdbcConnection”。此类型已转发到程序集“System.Data.Odbc, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51” 考虑添加对该程序集的引用。

如果我对 OleDbConnection 类尝试相同的操作,我会收到 OdbcCommand 类的类似消息和类似的错误。

在 Microsoft 文档中,OdbcConnection 类在 System.Data.Odbc 中被描述为 .NET Core 3.0 的一部分。

为什么我必须链接到旧版本?

我怎样才能做出所要求的引用?

附录
我发现.NET Core 3.0 中的 System.Data.Odbc 包只包含两个类(OdbcPermission 和 OdbcPermissionAttribute)。 .NET Framework 4.8 的 System.Data.Odbc 中包含的所有其他类都丢失了。

最佳答案

ODBC 和 OleDb 函数包含在 Microsoft.Windows.Compatibility Pack 中。如果您在 NuGet 的帮助下下载此文件,则会找到这些类(针对 .NET Core 3.1 进行了测试)。

该软件包可以在这里下载:
https://www.nuget.org/packages/Microsoft.Windows.Compatibility

关于c# - 如何在 Visual Studio 2019 和 .NET Core 3.0 中使用 ODBC 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58170947/

相关文章:

c# - "UseDeveloperExceptionPage"和 "UseExceptionHandler"一起使用

c# - 无论构建器的 WithMethods(..) 中的规范如何,似乎都允许 GET 和 POST

c# - 如何在EF Core 3中拦截数据库操作?

c# - 警告 MSB3276 - 奇怪的 Mono.Cairo 版本控制行为

c# - P2P 真的是无服务器的吗?

在 Ubuntu 上使用 SSL 的 MySQL ODBC 连接

sqlite - sqlite3表无法链接到Access

asp.net-core - ASP.NET Core 3 Blazor : Run on localhost of server ok, 但在服务器外部运行错误:WebSocket 握手期间出错:意外的响应代码:200

c# - 如何反序列化包含 JSON.NET 中的字符串和对象的数组

azure - 使用 Simba 驱动程序将 ODBC 连接到 AzureDatabricks