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 并设置为 Connection 的 SqlCommand。 然后,该示例调用 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)。
SqlException如果 由执行 的方法生成 ,SqlCommand则当严重性级别为 19 或更低时,SqlConnection将保持打开状态。 当严重性级别为 20 或更高时,服务器通常会关闭 SqlConnection。 但是,用户可以重新打开连接并继续操作。
创建 对象实例 SqlConnection 的应用程序可以通过设置声明性或命令性安全要求,要求所有直接调用方和间接调用方对代码具有足够的权限。 SqlConnection 使用 SqlClientPermission 对象提出安全要求。 用户可以使用 对象验证其代码是否具有足够的权限 SqlClientPermissionAttribute 。 用户和管理员还可以使用 Caspol.exe (代码访问安全策略工具) 在计算机、用户和企业级别修改安全策略。 有关详细信息,请参阅 .NET 中的安全性。 有关演示如何使用安全要求的示例,请参阅 代码访问安全性和 ADO.NET。
有关处理来自服务器的警告和信息性消息的详细信息,请参阅 连接事件。 有关 SQL Server 引擎错误和错误消息的详细信息,请参阅 数据库引擎事件和错误。
注意
可以强制 TCP 而不是共享内存。 为此,可以在连接字符串中将 tcp: 作为服务器名称的前缀,也可以使用 localhost。
构造函数
SqlConnection() |
初始化 SqlConnection 类的新实例。 |
SqlConnection(String) |
如果给定包含连接字符串的字符串,则初始化 SqlConnection 类的新实例。 |
SqlConnection(String, SqlCredential) |
在给定连接字符串的情况下,初始化 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 |
获取包含 IContainer 的 Component。 (继承自 Component) |
Credential |
获取或设置此连接的 SqlCredential 对象。 |
Database |
获取当前数据库的名称或打开连接后要使用的数据库的名称。 |
DataSource |
获取要连接的 SQL Server 的实例的名称。 |
DbProviderFactory |
获取此 DbProviderFactory 的 DbConnection。 (继承自 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() |
创建并返回一个与连接关联的命令对象。 |
IDbConnection.CreateCommand() |
创建并返回与当前连接关联的 DbCommand 对象。 (继承自 DbConnection) |