无法找到 System.Data.SqlClient 引用

23
我有一个全新的Visual Studio 2017专业版安装。我正在使用.NET 4.7.1构建一个快速的POC控制台应用程序,但找不到System.Data.SqlClient的引用。
我已经搜查了我的系统,并找到了4个版本的System.Data.SqlClient.dll,但都不正确,无法编译。 我也尝试使用System.Data,但没有找到对SqlClient的引用。我已经手动添加了System.Data的dll/引用,但也没有解决引用问题。
目前我的应用程序非常简单,但由于缺少这个引用,它无法编译。
请问需要采取哪些步骤来解决这个问题?
using System;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApp1
{
    class Database
    {
        public void Start()
        {

            string connString = @"server=(local);initial     catalog=MyDatabase;Integrated Security=SSPI;";
            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand("SELECT TOP 10 ID, Name FROM TableA", conn))
                {
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while(reader.Read())
                        {
                            Console.WriteLine("ID: [{0}], Name: [{1}]", reader.GetValue(0), reader.GetValue(1));
                        }
                    }
                }
            }
        }
    }
}

当你说找不到引用时,是指在进入“添加引用”->“程序集”时缺少了System.Data吗?如果你没有缺少System.Data,那么左侧是否有选中的复选框呢? - Tyler
1
谢谢 - 我不知道他们从新版VS中删除了这个功能。 谢谢 - 我现在已安装它。 - Allan L
1
此问题已关闭。.NET Core已从基本的Visual Studio安装中删除了此功能。为了使用它,您必须使用NuGet安装包(System.Data.SqlClient),之后它就可以访问了。感谢那些帮助我解决这个问题的人。 - Allan L
@AllanL 如果您想将此问题标记为已回答,我可以添加一个答案。如果您计划删除此内容,那么我就不会费心了。 - maccettura
谢谢 - 非常感谢。 - Allan L
显示剩余3条评论
7个回答

40

dotnet add package System.Data.SqlClient


7
另一种方法是使用NuGet: install-package System.Data.SqlClient - starscream_disco_party
谢谢,我记不清名字是否正确,而且在 GUI 中搜索它时,没有返回结果。 - Stevie

9

新问题。Microsoft在较新的Visual Studio和.NET Core版本中删除了System.Data.SqlClient。解决方法是安装NuGet包System.Data.SqlClient。换言之,您可能无法在系统上找到DLL文件,并需要使用NuGet添加它。

在“解决方案资源管理器”中,右键单击“引用”,然后选择“管理NuGet程序包…”。搜索“System.Data.SqlClient”。找到后选择并安装。

NuGet Package Manager


我上周也遇到了这个问题,同意这个解决方案。 - Chestera

6

您只需要在解决方案资源管理器中添加引用选项,如果还不起作用,则需要更改类库使用".net framework" 而不是 ".net standard"


1
这个方法有效,根据ParagJain上面的回答和问题下@Tyler的评论。右键单击您的项目,转到“添加”--->“引用”。在“程序集”下,查找“System.Data”并选中复选框。在我的情况下,我没有缺少System.Data(能够在“using指令”中调用System.Data),但是这个框仍然未被选中,因此不允许我使用“using System.Data.SqlClient;”。 - Kyle Vassella
1
@Jorge Candeias提供的答案适用于.NET Standard库。 - Austin Born

1
在我的情况下,我遇到了一个与其他答案不同的微妙问题。引用已经添加,但是它有一个黄色三角形,表示我在引用方面出了问题。
我不得不从引用下拉菜单中将其删除。

Assembly references

并使用以下命令重新安装软件包:

Update-Package System.Data.SqlClient -Reinstall

然后正确的引用被添加回来了。

我抓狂了两天,因为我知道我有这个引用,但从未注意到它有黄色三角形。

我以为这只是版本不匹配的问题,但在web.config上使用绑定重定向无济于事。

当我意识到System.Data.SqlClient.dll没有被复制到我的bin文件夹中时,我才意识到这一点。这是由于错误的程序集引用造成的。我不知道这个引用是怎么被损坏的。


0
请检查您电脑上的SQL Server版本,您可能安装了多个版本的SQL Server Express。请尝试从管理工具连接(localdb)/MSSQLLOCALDB,如果可以打开,请更新程序中的连接并重试。

0
我在使用Visual Studio 2022时遇到了同样的问题。
从解决方案资源管理器中,右键点击并选择管理NuGet包。

enter image description here

非常重要的细节,请确保您在包源中拥有全部内容:

enter image description here

去浏览: 输入data.sql 然后你会找到microsoft.data.sqlclient 安装它(我的图片上已经安装了,所以不用管这个)

enter image description here

enter image description here

enter image description here

现在你可以使用Microsoft.Data.SQLClient而不是System.Data.SqlClient。

enter image description here

我可能只是添加了更多的细节和图片,但我相信这是一个有效的答案,因为我花了很长时间才弄清楚,现在已经准备好了。

-1

只需添加引用 "System.Data.SqlClient"; 与上面的答案相同,只需在需要将 lib 类添加到您的项目时选择 ".net framework"。


谢谢你尝试提供帮助。这种态度是正确的,如果你想要进步,请提供有帮助的信息,让它清晰明了,并在可能的情况下添加图片。人们会感激的。我知道你明白,但我们需要在沟通方面再努力一些;system.data.sqlclient已经过时了。和上面的回答一样吗?哪一个?选择lib类".net framework"在哪里?如何到达那里? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接