建立连接

适用于: .NET Framework .NET .NET Standard

下载 ADO.NET

要连接到 Microsoft SQL Server,请使用 Microsoft SqlClient Data Provider for SQL Server 的 SqlConnection 对象。 要安全地存储和检索连接字符串,请参阅保护连接信息

关闭连接

我们建议您在使用完连接时一定要关闭连接,以便连接可以返回池。 如果 Visual Basic 或 C# 的代码中存在 Using 块,将自动断开连接,即使发生无法处理的异常。 有关详细信息,请参阅 using 语句 语句

还可以使用连接对象的 CloseDispose 方法。 不是显式关闭的连接可能不会添加或返回到池中。 例如,如果连接已超出范围但没有显式关闭,则仅当达到最大池大小而该连接仍然有效时,该连接才会返回到连接池中。

注意

不要在类的 Finalize 方法中对 Connection、DataReader 或任何其他托管对象调用 CloseDispose。 在终结器中,仅释放类直接拥有的非托管资源。 如果类不拥有任何非托管资源,则不要在类定义中包含 Finalize 方法。 有关详细信息,请参阅垃圾回收

备注

从连接池中提取连接或将连接返回到连接池时,服务器上不会引发登录和注销事件,这是因为在将连接返回到连接池时实际上并没有将其关闭。 有关详细信息,请参阅 SQL Server 连接池 (ADO.NET)

连接到 SQL Server

有关有效的字符串格式名称和值,请参见 ConnectionString 对象的 SqlConnection 属性。 您也可以使用 SqlConnectionStringBuilder 类在运行时创建具有有效语法的连接字符串。 有关详细信息,请参阅连接字符串生成器

以下代码示例演示如何创建并打开与 SQL Server 数据库的连接。

using Microsoft.Data.SqlClient;

class Program1
{
    static void Main()
    {
        string s = GetConnectionString();

        OpenSqlConnection(s);
        Console.ReadLine();
    }

    private static void OpenSqlConnection(string connectionString)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
            Console.WriteLine("State: {0}", connection.State);
        }
    }

    static private string GetConnectionString()
    {
        // To avoid storing the connection string in your code, 
        // you can retrieve it from a configuration file, using the 
        // System.Configuration.ConfigurationSettings.AppSettings property 
        return "Data Source=(local);Initial Catalog=AdventureWorks;"
            + "Integrated Security=SSPI;";
    }
}

集成安全性和 ASP.NET

SQL Server 集成安全性(也称为信任连接)在连接到 SQL Server 时有助于提供保护,因为它不会在连接字符串中公开用户 ID 和密码,并且是对连接进行身份验证的推荐方法。 集成安全性使用正在执行的进程的当前安全标识或标记。 对于桌面应用程序,此标识通常是当前登录用户的标识。

ASP.NET 应用程序的安全标识可设置为几个不同的选项之一。 若要更好地了解 ASP.NET 应用程序在连接到 SQL Server 时使用的安全标识,请参阅 ASP.NET 模拟ASP.NET 身份验证如何:使用 Windows 集成安全性访问 SQL Server

另请参阅