SqlConnection 类

表示 SQL Server 数据库的一个打开的连接。无法继承此类。

**命名空间:**System.Data.SqlClient
**程序集:**System.Data(在 system.data.dll 中)

语法

声明
Public NotInheritable Class SqlConnection
    Inherits DbConnection
    Implements ICloneable
用法
Dim instance As SqlConnection
public sealed class SqlConnection : DbConnection, ICloneable
public ref class SqlConnection sealed : public DbConnection, ICloneable
public final class SqlConnection extends DbConnection implements ICloneable
public final class SqlConnection extends DbConnection implements ICloneable

备注

SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话。对于客户端/服务器数据库系统,它等效于到服务器的网络连接。SqlConnectionSqlDataAdapterSqlCommand 一起使用,可以在连接 Microsoft SQL Server 数据库时提高性能。对于所有第三方 SQL 服务器产品以及其他支持 OLE DB 的数据源,请使用 OleDbConnection

当创建 SqlConnection 的实例时,所有属性都设置为它们的初始值。有关这些值的列表,请参见 SqlConnection 构造函数。

如果 SqlConnection 超出范围,则该连接将保持打开状态。因此,必须通过调用 CloseDispose 显式关闭该连接。CloseDispose 在功能上等效。如果连接池值 Pooling 设置为 trueyes,则基础连接将返回到连接池。另一方面,如果 Pooling 设置为 falseno,则实际上会关闭到服务器的基础连接。

若要确保连接始终关闭,请在 using 块内部打开连接,如下面的代码段所示。这样可确保在代码退出代码块时自动关闭连接。

Using connection As New SqlConnection(connectionString)
    connection.Open()
    ' Do work here; connection closed on following line.
End Using
using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        // Do work here; connection closed on following line.
    }

提示

若要部署高性能应用程序,则必须使用连接池。在使用用于 SQL Server 的 .NET Framework 数据提供程序时,不必启用连接池,因为提供程序会自动对此进行管理,不过您可以修改某些设置。有关更多信息,请参见 使用连接池

如果执行 SqlCommand 的方法生成 SqlException,那么当严重级别小于等于 19 时,SqlConnection 将仍保持打开状态。当严重级别大于等于 20 时,服务器通常会关闭 SqlConnection。但是,用户可以重新打开连接并继续操作。

用于创建 SqlConnection 对象实例的应用程序可通过设置声明性或强制性安全要求,要求所有直接和间接的调用方对代码都具有足够的权限。SqlConnection 使用 SqlClientPermission 对象设置安全要求。用户可以通过使用 SqlClientPermissionAttribute 对象来验证他们的代码是否具有足够的权限。用户和管理员还可以使用 代码访问安全策略工具 (Caspol.exe) 来修改计算机、用户和企业级别的安全策略。有关更多信息,请参见 .NET Framework 中的安全性。有关演示如何使用安全请求的示例,请参见 代码访问安全性和 ADO.NET

提示

如果您正在使用 Microsoft .NET Framework 1.0 版,则在使用 Open 连接到 SQL Server 时必须使用 FullTrust 命名权限集。如果使用的是 .NET Framework 1.1 版或更高版本,则此要求不适用。有关更多信息,请参见 请求权限命名的权限集

有关处理来自服务器的警告和信息性消息的更多信息,请参见 使用连接事件

主题 位置
如何:创建与 SQL Server 数据库的连接 Visual Studio 中的数据访问
如何:创建与 SQL Server 数据库的连接 Visual Studio 中的数据访问

示例

下面的示例创建一个 SqlCommand 和一个 SqlConnectionSqlConnection 打开,并设置为 SqlCommandConnection。然后,该示例调用 ExecuteNonQuery 并关闭该连接。为了完成此任务,将为 ExecuteNonQuery 传递一个连接字符串和一个查询字符串,后者是一个 Transact-SQL INSERT 语句。

Private Sub OpenSqlConnection()
    Dim connectionString As String = GetConnectionString()
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("State: {0}", connection.State)
    End Using
End Sub

Private Function GetConnectionString() As String
    ' 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);Database=AdventureWorks;" _
      & "Integrated Security=SSPI;"
End Function
private static void OpenSqlConnection()
{
    string connectionString = GetConnectionString();
    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;";
}

继承层次结构

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Data.Common.DbConnection
        System.Data.SqlClient.SqlConnection

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中连接和检索数据
使用 SQL Server .NET Framework 数据提供程序