请单击以进行评分并提供反馈
MSDN
MSDN Library
.NET 开发
.NET Framework

  开启低带宽视图
此页面仅适用于
Microsoft Visual Studio 2008/.NET Framework 3.5

同时提供下列产品的其他版本:
.NET Framework 类库
SqlConnection 类

更新:2007 年 11 月

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

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

Visual Basic(声明)
Public NotInheritable Class SqlConnection _
    Inherits DbConnection _
    Implements ICloneable
Visual Basic (用法)
Dim instance As SqlConnection
C#
public sealed class SqlConnection : DbConnection, 
    ICloneable
Visual C++
public ref class SqlConnection sealed : public DbConnection, 
    ICloneable
J#
public final class SqlConnection extends DbConnection implements ICloneable
JScript
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,则实际上会关闭到服务器的基础连接。

说明:

在从连接池中获取连接或将连接返回到连接池时,将不会在服务器上引发登录和注销事件,因为在将连接返回到连接池时,将不会实际关闭连接。有关更多信息,请参见 SQL Server 连接池 (ADO.NET)

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

Visual Basic
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 数据提供程序时,不必启用连接池,因为提供程序会自动对此进行管理,不过您可以修改某些设置。有关更多信息,请参见 SQL Server 连接池 (ADO.NET)

如果执行 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 版或更高版本,则此要求不适用。有关更多信息,请参见 请求权限命名的权限集

有关处理来自服务器的警告和信息性消息的更多信息,请参见连接事件 (ADO.NET)。SQL Server Books Online(《SQL Server 联机丛书》)中记载了 SQL Server 引擎错误和错误消息。

警告:

ADO.NET 2.0 不支持在 SQL Server 2000 或更低版本的共享内存上执行异步命令。但是,可以强制用 TCP 代替共享内存。可通过在连接字符串中的服务器名称之前添加 tcp: 前缀或使用本地主机来达到此目的。

TopicLocation
如何:创建与 SQL Server 数据库的连接Visual Studio 中的数据访问
如何:创建与 SQL Server 数据库的连接Visual Studio 中的数据访问

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

Visual Basic
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

C#
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
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

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

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

.NET Framework

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

.NET Compact Framework

受以下版本支持:3.5、2.0、1.0
社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利  |  商标  |  隐私权声明
Page view tracker