SqlConnection 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示与 SQL Server 数据库的连接。 无法继承此类。
public ref class SqlConnection sealed : System::Data::Common::DbConnection
public ref class SqlConnection sealed : System::ComponentModel::Component, ICloneable, IDisposable, System::Data::IDbConnection
public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable
public sealed class SqlConnection : System.Data.Common.DbConnection
public sealed class SqlConnection : System.ComponentModel.Component, ICloneable, IDisposable, System.Data.IDbConnection
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable
type SqlConnection = class
inherit DbConnection
type SqlConnection = class
inherit Component
interface IDbConnection
interface IDisposable
interface ICloneable
type SqlConnection = class
inherit DbConnection
interface ICloneable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Public NotInheritable Class SqlConnection
Inherits Component
Implements ICloneable, IDbConnection, IDisposable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable
- 继承
- 继承
- 继承
- 实现
示例
以下示例创建一个 SqlCommand 和一个 SqlConnection。 打开 SqlConnection 并将其设置为 SqlCommand的 Connection。 然后,该示例调用 ExecuteNonQuery。 为此,ExecuteNonQuery 将传递 SqlConnection 和查询字符串,该字符串是 Transact-SQL INSERT 语句。 当代码退出 using 块时,将自动关闭连接。
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();
}
}
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 Using
End Sub
注解
SqlConnection 对象表示与 SQL Server 数据源的唯一会话。 使用客户端/服务器数据库系统时,它等效于与服务器的网络连接。 SqlConnection 与 SqlDataAdapter 和 SqlCommand 一起使用,以提高连接到 Microsoft SQL Server 数据库时的性能。 对于所有第三方 SQL Server 产品和其他 OLE DB 支持的数据源,请使用 OleDbConnection。
创建 SqlConnection实例时,所有属性都设置为其初始值。 有关这些值的列表,请参阅 SqlConnection 构造函数。
有关连接字符串中关键字的列表,请参阅 ConnectionString。
如果 SqlConnection 超出范围,则不会关闭它。 因此,必须通过调用 Close
或 Dispose
显式关闭连接。
Close
和 Dispose
在功能上是等效的。 如果连接池值 Pooling
设置为 true
或 yes
,基础连接将返回给连接池。 另一方面,如果 Pooling
设置为 false
或 no
,则与服务器的基础连接实际上已关闭。
注意
从连接池提取或返回到连接池时,不会在服务器上引发登录和注销事件,因为连接在返回到连接池时实际上不会关闭。 有关详细信息,请参阅 SQL Server 连接池(ADO.NET)。
若要确保连接始终关闭,请在 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中的
有关处理来自服务器的警告和信息性消息的详细信息,请参阅 连接事件。 有关 SQL Server 引擎错误和错误消息的详细信息,请参阅 数据库引擎事件和错误。
谨慎
可以强制 TCP 而不是共享内存。 为此,可以添加 tcp 前缀:到连接字符串中的服务器名称,也可以使用 localhost。
构造函数
SqlConnection() |
初始化 SqlConnection 类的新实例。 |
SqlConnection(String, SqlCredential) |
在给定连接字符串的情况下初始化 SqlConnection 类的新实例,该字符串不使用 |
SqlConnection(String) |
当给定包含连接字符串的字符串时,初始化 SqlConnection 类的新实例。 |
属性
AccessToken |
获取或设置连接的访问令牌。 |
CanCreateBatch |
获取一个值,该值指示此 DbConnection 实例是否支持 DbBatch 类。 (继承自 DbConnection) |
CanRaiseEvents |
获取一个值,该值指示组件是否可以引发事件。 (继承自 Component) |
ClientConnectionId |
最新连接尝试的连接 ID,无论尝试是成功还是失败。 |
ColumnEncryptionKeyCacheTtl |
获取或设置 Always Encrypted 功能的列加密密钥缓存中列加密密钥项的生存时间。 默认值为 2 小时。 0 表示根本不进行缓存。 |
ColumnEncryptionQueryMetadataCacheEnabled |
获取或设置一个值,该值指示针对启用了 Always Encrypted 数据库运行的参数化查询是否启用查询元数据缓存(true)或 false。 默认值为 true。 |
ColumnEncryptionTrustedMasterKeyPaths |
允许为数据库服务器设置受信任的密钥路径列表。 如果在处理应用程序查询时驱动程序收到不在列表中的密钥路径,查询将失败。 此属性提供对安全攻击的额外保护,这些攻击涉及泄露的 SQL Server 提供假密钥路径,这可能会导致密钥存储凭据泄露。 |
ConnectionString |
获取或设置用于打开 SQL Server 数据库的字符串。 |
ConnectionTimeout |
获取在终止尝试并生成错误之前尝试建立连接的时间(以秒为单位)。 |
Container |
获取包含 Component的 IContainer。 (继承自 Component) |
Credential |
获取或设置此连接的 SqlCredential 对象。 |
Database |
获取打开连接后要使用的当前数据库或数据库的名称。 |
DataSource |
获取要连接到的 SQL Server 实例的名称。 |
DbProviderFactory |
获取此 DbConnection的 DbProviderFactory。 (继承自 DbConnection) |
DesignMode |
获取一个值,该值指示 Component 当前是否处于设计模式。 (继承自 Component) |
Events |
获取附加到此 Component的事件处理程序的列表。 (继承自 Component) |
FireInfoMessageEventOnUserErrors |
获取或设置 FireInfoMessageEventOnUserErrors 属性。 |
PacketSize |
获取用于与 SQL Server 实例通信的网络数据包的大小(以字节为单位)。 |
ServerVersion |
获取一个字符串,该字符串包含客户端连接到的 SQL Server 实例的版本。 |
Site | (继承自 Component) |
State |
指示在对连接执行的最新网络操作期间 SqlConnection 的状态。 |
StatisticsEnabled |
设置为 |
WorkstationId |
获取标识数据库客户端的字符串。 |
方法
事件
Disposed |
当组件通过调用 Dispose() 方法释放时发生。 (继承自 Component) |
InfoMessage |
当 SQL Server 返回警告或信息性消息时发生。 |
StateChange |
在连接状态发生更改时发生。 |
StateChange |
在连接状态发生更改时发生。 (继承自 DbConnection) |
显式接口实现
ICloneable.Clone() |
创建一个新对象,该对象是当前实例的副本。 |
IDbConnection.BeginTransaction() |
开始数据库事务。 |
IDbConnection.BeginTransaction() |
开始数据库事务。 (继承自 DbConnection) |
IDbConnection.BeginTransaction(IsolationLevel) |
使用指定的 IsolationLevel 值开始数据库事务。 |
IDbConnection.BeginTransaction(IsolationLevel) |
使用指定的隔离级别开始数据库事务。 (继承自 DbConnection) |
IDbConnection.CreateCommand() |
创建并返回与连接关联的 Command 对象。 |
IDbConnection.CreateCommand() |
创建并返回与当前连接关联的 DbCommand 对象。 (继承自 DbConnection) |