SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话。对于客户端/服务器数据库系统,它等效于到服务器的网络连接。SqlConnection 与 SqlDataAdapter 和 SqlCommand 一起使用,可以在连接 Microsoft SQL Server 数据库时提高性能。对于所有第三方 SQL 服务器产品以及其他支持 OLE DB 的数据源,请使用 OleDbConnection。
当创建 SqlConnection 的实例时,所有属性都设置为它们的初始值。有关这些值的列表,请参见 SqlConnection 构造函数。
如果 SqlConnection 超出范围,则不会将其关闭。因此,必须通过调用 Close 或 Dispose 显式关闭该连接。Close 和 Dispose 在功能上等效。如果连接池值 Pooling 设置为 true 或 yes,则基础连接将返回到连接池。另一方面,如果 Pooling 设置为 false 或 no,则实际上会关闭到服务器的基础连接。
若要确保连接始终关闭,请在 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 数据提供程序时,不必启用连接池,因为提供程序会自动对此进行管理,不过您可以修改某些设置。有关更多信息,请参见 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: 前缀或使用本地主机来达到此目的。 |