如何在 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.Odbc
和 var conn = new OdbcConnection();
后来抛出错误,直到我通过包管理器安装了包。以上是关于如何在 Visual Studio 2019 和 .NET Core 3.0 中使用 ODBC 连接?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2019 中安装 Biztalk 2020 项目模板?
如何在 Visual Studio 2019 中使用 CppFlow 库?