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打开 并设置为 Connection 的 SqlCommand。 然后,该示例调用 ExecuteNonQuery。 为此,向 ExecuteNonQuery 传递连接字符串和作为 Transact-SQL INSERT 语句的查询字符串。 当代码退出 using 块时,连接会自动关闭。
using System;
using System.Data;
using Microsoft.Data.SqlClient;
namespace SqlCommandCS
{
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
,则实际上会关闭与服务器的基础连接。
备注
从连接池中提取连接或将连接返回到连接池时,服务器上不会引发登录和注销事件,这是因为在将连接返回到连接池时实际上并没有将其关闭。 有关详细信息,请参阅 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 |
获取或设置用于连接的访问令牌。 |
AccessTokenCallback |
获取或设置连接的访问令牌回调。 |
CanCreateBatch |
获取一个值,该值指示此 SqlConnection 是否支持 DbBatch 类。 |
ClientConnectionId |
最近连接尝试连接的 ID,无论该尝试是成功还是失败。 |
ColumnEncryptionKeyCacheTtl |
在用于 Always Encrypted 功能的列加密密钥缓存中,获取或设置列加密密钥项的生存时间。 默认值为 2 小时。 0 表示无缓存。 |
ColumnEncryptionQueryMetadataCacheEnabled |
获取或设置一个值,该值指示对参数化查询(针对已启用 Always Encrypted 的数据库运行)已启用 (True) 还是未启用 (False) 查询元数据缓存。 默认值为 true。 |
ColumnEncryptionTrustedMasterKeyPaths |
允许你为数据库服务器设置受信任的密钥路径的列表。 如果在处理应用程序查询时驱动程序接收到不位于列表中的密钥路径,则查询会失败。 此属性提供针对安全攻击的额外保护,这些攻击涉及到提供伪造密钥路径的受损 SQL Server,这可能导致泄露密钥存储凭据。 |
CommandTimeout |
获取终止尝试执行命令并生成错误的) 的默认等待时间 (秒。 默认为 30 秒。 |
ConnectionString |
获取或设置用于打开 SQL Server 数据库的字符串。 |
ConnectionTimeout |
获取终止尝试并生成错误之前在尝试建立连接时所等待的时间。 |
Credential |
获取或设置此连接的 SqlCredential 对象。 |
Database |
获取当前数据库的名称或打开连接后要使用的数据库的名称。 |
DataSource |
获取要连接的 SQL Server 的实例的名称。 |
FireInfoMessageEventOnUserErrors |
获取或设置 FireInfoMessageEventOnUserErrors 属性。 |
PacketSize |
获取用于与 SQL Server 的实例进行通信的网络数据包的大小(以字节为单位)。 |
RetryLogicProvider |
获取或设置一个指定绑定到此命令的 SqlRetryLogicBaseProvider 对象的值。 |
ServerProcessId |
获取活动连接的 SPID) (服务器进程 ID。 |
ServerVersion |
获取一个字符串,其中包含客户端所连接到的 SQL Server 的实例的版本。 |
State |
最近在连接上执行网络操作时表示 SqlConnection 的状态。 |
StatisticsEnabled |
如果设置为 |
WorkstationId |
获取一个标识数据库客户端的字符串。 |
方法
事件
InfoMessage |
当 SQL Server 返回一个警告或信息性消息时发生。 |
显式接口实现
ICloneable.Clone() |
创建作为当前实例副本的新对象。 |