【发布时间】: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 编译新项目?
标签: c# odbc .net-core-3.0