SqlConnection 表示一个到 SQL Server 数据库的打开的连接。 此类不能被继承。
简介
继承层次结构
SystemObject
SystemMarshalByRefObject
System.ComponentModelComponent
System.Data.CommonDbConnection
System.Data.SqlClientSqlConnection
程序集
System.Data(在 System.Data.dll 中)
语法
[pre]Public NotInheritable Class SqlConnection _ Inherits DbConnection _ Implements ICloneable[pre]
public sealed class SqlConnection : DbConnection,
ICloneable
[pre]public ref class SqlConnection sealed : public DbConnection, ICloneable[pre][]type SqlConnection = class inherit DbConnection interface ICloneable end
SqlConnection 类型公开以下成员。
属性
方法
事件
显式接口实现
其他信息
SqlConnection 对象表示单个会话中对 SQL Server 数据源。 在客户端/服务器数据库系统中,它等效于一个到服务器的网络连接。 当连接到 Microsoft SQL Server 数据库时,SqlConnection 与
SqlDataAdapter 和
SqlCommand 一起使用来提高性能。 对于所有第三方 SQL Server 产品,同时,其他 OLE DB 支持数据源,请使用 OleDbConnection。
当创建 SqlConnection 的实例时,所有属性都设置为它们的初始值。 有关这些值的列表,请参见 SqlConnection 构造函数。
有关连接字符串中的关键字列表,请参见 ConnectionString。
如果 SqlConnection 超出范围,则不会将其关闭。 因此,必须通过调用Close或Dispose显式关闭该连接。Close 和 Dispose 的功能等效。 如果连接池值 Pooling 设置为 true 或 yes,则基础连接将返回到连接池。 另一方面,如果 Pooling 设置为 false 或 no,则实际上会关闭到服务器的基础连接。
若要确保连接始终关闭,请在 using 块内部打开连接,如下面的代码段所示。 这样可确保在代码退出代码块时自动关闭连接。
[pre]Using connection As New SqlConnection(connectionString) connection.Open() ' Do work here; connection closed on following line.End Using[pre]
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Do work here; connection closed on following line.
}
如果执行
SqlCommand 的方法生成 SqlException,那么当严重级别小于等于 19 时,SqlConnection 将仍保持打开状态。 当严重级别大于等于 20 时,服务器通常会关闭 SqlConnection。 但是,用户可以重新打开连接并继续。
创建 SqlConnection 对象的实例的应用程序可通过设置声明性或命令性安全要求,要求所有直接和间接的调用方都具有访问代码的充分权限。SqlConnection 使用 SqlClientPermission 对象设置安全要求。 用户可以通过使用 SqlClientPermissionAttribute 对象来验证他们的代码是否具有足够的权限。 用户和管理员还可以使用Caspol.exe(代码访问安全策略工具) 来修改计算机、用户和企业级别的安全策略。 有关更多信息,请参见.NET Framework 中的安全性。 有关演示如何使用安全请求的示例,请参见 Code Access Security and ADO.NET。
有关处理来自服务器的警告和信息性消息的更多信息,请参见Working with Connection Events。SQL Server 引擎错误和错误消息。SQL Server Books online 文档。
示例
下面的示例创建一个
SqlCommand 和一个 SqlConnection。SqlConnection 打开,并设置为 SqlCommand 的 Connection。 该示例然后调用 ExecuteNonQuery。 为此,ExecuteNonQuery 通过连接字符串和是 Transact-SQL INSERT 语句中的查询字符串。 当代码使用块退出时,连接自动关闭。
[pre]Public Sub CreateCommand(ByVal queryString As String, _ ByVal connectionString As String) Using connection As New SqlConnection(connectionString) Dim command As New SqlCommand(queryString, connection) command.Connection.Open() command.ExecuteNonQuery() End UsingEnd Sub[pre]
private static void CreateCommand(string queryString,
string connectionString)
{
using (SqlConnection connection = new SqlConnection(
connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.Connection.Open();
command.ExecuteNonQuery();
}
}
版本
.NET Framework
受以下版本支持:4.5、4、3.5、3.0、2.0、1.1、1.0
.NET Framework Client Profile
受以下版本支持:4、3.5 SP1
平台
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)
.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。
线程安全
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
请参见
参考
System.Data.SqlClient 命名空间
其他资源
Connecting to a Data Source (ADO.NET)
Using the .NET Framework Data Provider for SQL Server
ADO.NET 托管提供程序和数据集开发人员中心