如何将 ODBC 连接与 Visual Studio 2019 和 .NET Core 3.0 结合使用?

问题描述 投票:0回答:3

我使用 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 中包含的所有其他类均丢失。

c# odbc .net-core-3.0
3个回答
7
投票

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

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


0
投票

如果您使用 .net 5+,则在不添加 nuget 包的情况下,您将不会有 odbc 或 oledb。通常您只需要从

切换

using System.Data.SqlClient;
using Microsoft.Data.SqlClient;

并使用如docs

中所示的连接字符串
// Use your own server, database, and user ID.
// User ID is optional.
string ConnectionString1 = @"Server=demo.database.windows.net; Authentication=Active Directory Interactive; Encrypt=True; Database=testdb; User [email protected]";

using (SqlConnection conn = new SqlConnection(ConnectionString1)) {
    conn.Open();
}

// User ID is not provided.
string ConnectionString2 = @"Server=demo.database.windows.net; Authentication=Active Directory Interactive; Encrypt=True; Database=testdb";

using (SqlConnection conn = new SqlConnection(ConnectionString2)) {
    conn.Open();
}

0
投票

这对我有用

dotnet add package System.Data.Odbc --version 8.0.0

© www.soinside.com 2019 - 2024. All rights reserved.