这段代码有什么问题?为什么我不能使用SqlConnection?

34

我对SQL完全是新手,想用数据库制作一个ConsoleApp。我了解了一些内容并尝试了一下。当我需要创建SqlConnection时,我的VS 2019 Preview显示了以下错误:

严重性 代码 说明 项目 文件 行 抑制状态 错误 CS1069 The type name 'SqlConnection' could not be found in the namespace 'System.Data.SqlClient'. This type has been forwarded to assembly 'System.Data.SqlClient, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' Consider adding a reference to that assembly. ConsoleApp1 C:\Users\User\Desktop\Bald Code\ConsoleApp1\ConsoleApp1\Program.cs 12 Active

我不明白为什么它无法工作。

这是我的代码:

using System;

using System.Data;

using System.Data.SqlClient;

namespace ConsoleApp1

{

    class Program
    {
        static void Main(string[] args)
        {
            string connectionString;
            SqlConnection cnn;
        }
    }
}

你需要在项目引用中添加 System.Data.SqlClient 程序集。 - peeyush singh
11个回答

51
如果您刚刚将EntityFrameworkCore从2.x版本升级到3.x版本,并且遇到了这个问题,请将您的using语句更改为Microsoft.Data.SqlClient,而不是System.Data.SqlClient
如果您正在使用EntityFrameworkCore.SqlServer,它已经作为一个依赖项存在,所以您不需要显式安装它。 这篇Microsoft博客解释了这个变化。

Microsoft.Data.SqlClient包将成为未来SQL Server的旗舰数据访问驱动程序。


我们没有打算在短期内停止对System.Data.SqlClient的支持(该文档写于2019年)。它将保持原样,并且我们将在出现重要的错误和安全问题时进行修复。然而,Microsoft.Data.SqlClient将是我们未来实现新功能的唯一地方。

不起作用... Microsoft 没有 Data.SqlClient。 - Ahmed Eissa
4
https://www.nuget.org/packages/Microsoft.Data.SqlClient/2.0.1 - Chad Hedgcock
在VSCode上工作,使用C# .NET Core项目,我打开了一个新的终端窗口,并在命令行中执行了以下命令 -"dotnet add package System.Data.SqlClient"编译后的软件现在可以按预期的方式访问数据库了。 - undefined

30

很可能 System.Data.SqlClient.DLL 不在 Bin 文件夹中,且您没有在项目中设置对该 DLL 的引用。在安装 Visual Studio 时,您错过了数据库选项。现在您只需手动添加名为“System.Data.SqlClient”的引用。

1.右键单击您的项目名称并选择 nuget 包选项。

2.搜索“System.Data.SqlClient”并安装它。

输入图像描述

希望这可以修复您的错误


25

假设您正在使用.NET Core - 只需添加NuGet包:System.Data.SqlClient

您的.csproj文件可能如下所示:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="System.Data.SqlClient" Version="4.5.1" />
  </ItemGroup>
</Project>

4
尽管在VS2017中添加了NuGet包,我遇到了类似的问题。我不得不关闭项目并重新打开它,以便识别System.Data.SqlClient。 - Mmm

13
在VS Code中解决此问题的具体方法是:
  1. 打开终端,转到Terminal -> New Terminal

  2. 运行dotnet add package System.Data.SqlClient

  3. 运行dotnet restore

那最后一个命令可能并不必要,但是这样做对我很有效。似乎控制台应用程序模板没有准备好引用SqlClient。 更新 我认为未来的项目应该使用Microsoft.Data.SqlClient而不是System.Data.SqlClient:https://devblogs.microsoft.com/dotnet/introducing-the-new-microsoftdatasqlclient/

3

如Mmm在评论中提到的,如果您正在使用.NET Core并已安装了System.Data.SqlClient软件包,则关闭并重新打开项目也可以解决此问题。

“Original Answer”翻译成中文为“最初的回答”。


0

NuGet 包

Install-Package System.Data.SqlClient

解决我的问题。


你怎么进入这个命令行界面,可以在里面输入命令? - undefined

0

对我来说,System.Data.SqlClient已经安装好了。我所需要做的是,前往Nuget包管理器并将版本从4.8.3降级到4.8.2,然后它就可以工作了。


1
4.8.2 对我不起作用。在运行时,我得到一个期望 4.6.1.2 的错误。 - Kirsten

0

今天我遇到了一个错误,问题是 VS CODE 没有识别 System.Data.SqlClient;因此,您无法调用变量...

我是如何解决它的??

我安装了:

  • SQL Server Compact Toolbox
  • NuGet 包版本更新程序

关闭 Visual Studio,重新打开,您的程序应该运行正常!


0

[!["管理解决方案的Nuget包"]

这解决了我的问题。 [1]: https://istack.dev59.com/hpk2e.webp

我刚刚从“管理解决方案的Nuget包”中安装了Nuget包。之前我尝试通过命令行安装,但没有成功,所以我使用UI安装了这个包。


0

这很简单

进入解决方案资源管理器 > 右键单击 & 点击管理 NuGet 包 > 安装 System.data.SqlClient 4.5.1 或更高版本。

点击此处查看截图


1
欢迎来到 Stack Overflow。你的回答与之前的许多回答相同,没有为帖子添加任何新的或有用的内容。当你有足够的声望时,你可以投赞成票支持现有的答案,而不是重复回答,这是应该避免的。 - Guy Levy

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