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

Posted

技术标签:

【中文标题】如何在 Visual Studio 2019 和 .NET Core 3.0 中使用 ODBC 连接?【英文标题】:How can I use ODBC connections with Visual Studio 2019 and .NET Core 3.0? 【发布时间】:2019-09-30 15:25:25 【问题描述】:

我使用 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:管理工具:ODBC 数据源 问题与Windows的ODBC配置无关。问题是编译器错误。根据 Microsoft 文档,编译器不知道它应该知道的类。 我可能是.proj文件中的版本。创建一个新项目并添加 System.Data.ODBC。然后编译并用记事本打开.proj。检查版本,看看它是否与非工作项目相同。然后编辑非工作项目。 我没有 .proj 文件,只有一个 .sln 文件。我在其中找不到任何与 ODBC 相关的版本号。另一方面,非工作项目是一个新项目,它不是从较旧的 Visual C# 版本导入的。仅从旧项目中添加了 .c# 文件。 如果您在创建项目后升级了 Net,您可能会遇到问题。是否使用 System.Data.ODBC 编译新项目? 【参考方案1】:

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

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

【讨论】:

+1 这就是我的问题。 using System.Data.Odbcvar conn = new OdbcConnection(); 后来抛出错误,直到我通过包管理器安装了包。

以上是关于如何在 Visual Studio 2019 和 .NET Core 3.0 中使用 ODBC 连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2019 中安装 Biztalk 2020 项目模板?

如何在 Visual Studio 2019 中使用 CppFlow 库?

如何使用 Visual Studio 2019 进行 .NET Core 远程开发

如何在 Visual Studio 2019 中更改行距?

visual studio2019怎么运行c语言程序

Visual Studio 2019:如何将您的项目保存到 Azure DevOps?