SqlConnection 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示与SQL Server数据库的连接。 无法继承此类。
public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable
type SqlConnection = class
inherit DbConnection
interface ICloneable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable
- 继承
-
SqlConnection
- 实现
示例
以下示例创建一个 SqlCommand 和一个 SqlConnection。 将SqlConnection打开并设置为ConnectionSqlCommand 然后,该示例调用 ExecuteNonQuery。 为此,ExecuteNonQuery传递 SqlConnection 和查询字符串,该字符串是 Transact-SQL INSERT 语句。 当代码退出 using 块时,将自动关闭连接。
using System;
using System.Data;
using Microsoft.Data.SqlClient;
namespace SqlCommand_ExecuteNonQuery
{
class Program
{
static void Main()
{
string str = "Data Source=(local);Initial Catalog=Northwind;"
+ "Integrated Security=SSPI";
string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
CreateCommand(qs, str);
}
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();
}
}
}
}
注解
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实际上关闭与服务器的基础连接。
Note
从连接池中提取连接或将连接返回到连接池时,服务器上不会引发登录和注销事件,这是因为在将连接返回到连接池时实际上并没有将其关闭。 有关详细信息,请参阅 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.
}
Note
若要部署高性能应用程序,必须使用连接池。 使用 .NET Framework Data Provider 进行SQL Server时,无需启用连接池,因为提供程序会自动管理此配置,尽管可以修改某些设置。 有关详细信息,请参阅 SQL Server 连接池(ADO.NET)。
如果由执行 a 的方法生成 a SqlExceptionSqlCommand, SqlConnection 则当严重性级别为 19 或更少时,将保持打开状态。 当严重级别为 20 或更大时,服务器通常会关闭 。SqlConnection 但是,用户可以重新打开连接并继续。
创建对象的实例 SqlConnection 的应用程序可以通过设置声明性或命令性安全要求,要求所有直接和间接调用方具有对代码的足够权限。 SqlConnection 使用 SqlClientPermission 对象发出安全要求。 用户可以使用该对象来验证其代码是否具有足够的权限 SqlClientPermissionAttribute 。 用户和管理员还可以使用 Caspol.exe(代码访问安全策略工具) 在计算机、用户和企业级别修改安全策略。 有关详细信息,请参阅 .NET 中的安全性。 有关演示如何使用安全要求的示例,请参阅 代码访问安全和 ADO.NET。
有关处理来自服务器的警告和信息性消息的详细信息,请参阅 连接事件。 有关SQL Server引擎错误和错误消息的详细信息,请参阅 数据库引擎 事件和错误。
注意
可以强制 TCP 而不是共享内存。 为此,可以添加 tcp 前缀:到连接字符串中的服务器名称,也可以使用 localhost。
构造函数
| 名称 | 说明 |
|---|---|
| SqlConnection() |
初始化 SqlConnection 类的新实例。 |
| SqlConnection(String, SqlCredential) |
在给定连接字符串的情况下初始化类的新实例,该字符串 SqlConnection 不使用 |
| SqlConnection(String) |
给定包含连接字符串的 SqlConnection 字符串时,初始化类的新实例。 |
属性
| 名称 | 说明 |
|---|---|
| AccessToken |
获取或设置连接的访问令牌。 |
| AccessTokenCallback |
获取或设置连接的访问令牌回调。 |
| CanCreateBatch |
获取一个值,该值指示此 SqlConnection 实例是否支持 DbBatch 该类。 |
| ClientConnectionId |
最新连接尝试的连接 ID,无论尝试是成功还是失败。 |
| ColumnEncryptionKeyCacheTtl |
获取或设置 Always Encrypted 功能的列加密密钥缓存中列加密密钥条目的生存时间。 默认值为 2 小时。 0 表示根本不进行缓存。 |
| ColumnEncryptionQueryMetadataCacheEnabled |
获取或设置一个值,该值指示是否为针对已启用 Always Encrypted 的数据库运行的参数化查询启用查询元数据缓存(true)或否(false)。 默认值为真。 |
| ColumnEncryptionTrustedMasterKeyPaths |
允许你为数据库服务器设置受信任的密钥路径的列表。 如果在处理应用程序查询时驱动程序收到不在列表中的密钥路径,查询将失败。 此属性提供对涉及泄露SQL Server提供假密钥路径的安全攻击的额外保护,这可能会导致密钥存储凭据泄露。 |
| CommandTimeout |
获取在终止尝试执行命令并生成错误之前的默认等待时间(以秒为单位)。 默认值为 30 秒。 |
| ConnectionString |
获取或设置用于打开 SQL Server 数据库的字符串。 |
| ConnectionTimeout |
获取在尝试建立连接时等待的时间,然后再终止尝试并生成错误。 |
| Credential |
获取或设置 SqlCredential 此连接的对象。 |
| Database |
获取打开连接后要使用的当前数据库或数据库的名称。 |
| DataSource |
获取要连接到的 SQL Server 实例的名称。 |
| FireInfoMessageEventOnUserErrors |
获取或设置 FireInfoMessageEventOnUserErrors 属性。 |
| PacketSize |
获取用于与SQL Server实例通信的网络数据包的大小(以字节为单位)。 |
| RetryLogicProvider |
获取或设置一个值,该值指定 SqlRetryLogicBaseProvider 绑定到此命令的对象。 |
| ServerProcessId |
获取活动连接的服务器进程 ID (SPID)。 |
| ServerVersion |
获取一个字符串,该字符串包含客户端连接到的 SQL Server 实例的版本。 |
| SspiContextProvider |
获取或设置 SspiContextProvider 用于自定义 SSPI 上下文的实例。 如果未设置,将使用平台的默认值。 |
| State |
指示在连接上执行的最新网络操作期间的状态 SqlConnection 。 |
| StatisticsEnabled |
设置为 “ |
| WorkstationId |
获取标识数据库客户端的字符串。 |
方法
活动
| 名称 | 说明 |
|---|---|
| InfoMessage |
当SQL Server返回警告或信息性消息时发生。 |
显式接口实现
| 名称 | 说明 |
|---|---|
| ICloneable.Clone() |
创建一个新对象,该对象是当前实例的副本。 |