SqlConnection Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет подключение к базе данных 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 и a SqlConnection. Откроется SqlConnection и задано значение Connection для SqlCommandпараметра . Затем в примере вызывается ExecuteNonQuery. Для этого ExecuteNonQuery передается sqlConnection и строка запроса, которая является инструкцией INSERT Transact-SQL. Подключение закрывается автоматически при выходе кода из блока 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, базовое подключение к серверу фактически закрывается.
Замечание
События входа в систему и выхода из системы не вызываются на сервере при выборке подключения из пула подключений и при возврате его в пул подключений, поскольку при возврате в пул подключений подключение фактически не закрывается. Дополнительные сведения см. в разделе Объединение подключений в пул в 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.
}
Замечание
Чтобы развернуть высокопроизводительные приложения, необходимо использовать пул подключений. При использовании Data Provider платформы .NET для SQL Server не требуется включить пул подключений, так как поставщик управляет этим автоматически, хотя можно изменить некоторые параметры. Дополнительные сведения см. в разделе Объединение подключений в пул в SQL Server (ADO.NET).
SqlException Если метод создает методSqlCommand, 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 |
Возвращает значение, указывающее, поддерживает DbBatch ли этот SqlConnection экземпляр класс. |
| ClientConnectionId |
Идентификатор подключения последней попытки подключения независимо от того, выполнена ли попытка успешно или завершилась ошибкой. |
| ColumnEncryptionKeyCacheTtl |
Возвращает или задает время в реальном времени для записей ключа шифрования столбцов в кэше ключей шифрования столбца для функции Always Encrypted . Значение по умолчанию — 2 часа. 0 означает отсутствие кэширования вообще. |
| ColumnEncryptionQueryMetadataCacheEnabled |
Возвращает или задает значение, указывающее, включена ли кэширование метаданных запроса (true) или нет (false) для параметризованных запросов, выполняемых в базах данных с поддержкой Always Encrypted . Значение по умолчанию — 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) активного подключения. |
| ServerVersion |
Возвращает строку, содержащую версию экземпляра SQL Server, к которому подключен клиент. |
| SspiContextProvider |
Возвращает или задает SspiContextProvider экземпляр для настройки контекста SSPI. Если не задано, будет использоваться значение по умолчанию для платформы. |
| State |
Указывает состояние последней SqlConnection сетевой операции, выполняемой при подключении. |
| StatisticsEnabled |
Если задано значение |
| WorkstationId |
Возвращает строку, определяющую клиент базы данных. |
Методы
| Имя | Описание |
|---|---|
| BeginTransaction() |
Запускает транзакцию базы данных. |
| BeginTransaction(IsolationLevel, String) |
Запускает транзакцию базы данных с указанным уровнем изоляции и именем транзакции. |
| BeginTransaction(IsolationLevel) |
Запускает транзакцию базы данных с указанным уровнем изоляции. |
| BeginTransaction(String) |
Запускает транзакцию базы данных с указанным именем транзакции. |
| ChangeDatabase(String) |
Изменяет текущую базу данных для открытой SqlConnection. |
| ChangePassword(String, SqlCredential, SecureString) |
Изменяет пароль SQL Server для пользователя, указанного в объекте SqlCredential. |
| ChangePassword(String, String) |
Изменяет пароль SQL Server для пользователя, указанного в строка подключения на предоставленный новый пароль. |
| ClearAllPools() |
Очищает пул соединений. |
| ClearPool(SqlConnection) |
Очищает пул соединений, связанный с указанным подключением. |
| Close() |
Закрывает подключение к базе данных. Это предпочтительный метод закрытия любого открытого подключения. |
| CreateCommand() |
Создает и возвращает объект, связанный SqlCommand с SqlConnectionобъектом. |
| EnlistDistributedTransaction(ITransaction) |
Выполняет перечисление в указанную транзакцию в виде распределенной транзакции. |
| EnlistTransaction(Transaction) |
Выполняет перечисление в указанную транзакцию в виде распределенной транзакции. |
| GetSchema() |
Возвращает сведения о схеме для источника данных этого SqlConnectionобъекта. Дополнительные сведения о схеме см. в разделе SQL Server коллекции схем. |
| GetSchema(String, String[]) |
Возвращает сведения о схеме для источника данных, SqlConnection используя указанную строку для имени схемы и указанный массив строк для значений ограничений. |
| GetSchema(String) |
Возвращает сведения о схеме для источника данных, SqlConnection используя указанную строку для имени схемы. |
| Open() |
Открывает подключение к базе данных с параметрами свойств, заданными параметром ConnectionString. |
| Open(SqlConnectionOverrides) |
Открывает подключение к базе данных с параметрами свойств, заданными параметром ConnectionString. |
| OpenAsync(CancellationToken) |
Асинхронная версия Open(), которая открывает подключение к базе данных с параметрами свойств, указанными в параметре ConnectionString. Маркер отмены можно использовать для запроса на то, что операция будет прекращена до истечения времени ожидания подключения. Исключения будут распространяться через возвращаемую задачу. Если время ожидания подключения истекает без успешного подключения, возвращенная задача будет помечена как неисправная с исключением. Реализация возвращает задачу, не блокируя вызывающий поток для подключений, не относящихся к пулу. |
| OpenAsync(SqlConnectionOverrides, CancellationToken) |
Асинхронная версия Open(), которая открывает подключение к базе данных с параметрами свойств, указанными в параметре ConnectionString. Маркер отмены можно использовать для запроса на то, что операция будет прекращена до истечения времени ожидания подключения. Исключения будут распространяться через возвращаемую задачу. Если время ожидания подключения истекает без успешного подключения, возвращенная задача будет помечена как неисправная с исключением. Реализация возвращает задачу, не блокируя вызывающий поток для подключений, не относящихся к пулу. |
| RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) |
Регистрирует поставщиков хранилища ключей шифрования столбцов. Эта функция должна вызываться только один раз в приложении. Это делает неглубокое копирование словаря, чтобы приложение не могло изменить настраиваемый список поставщиков после его установки. Встроенные поставщики хранилища главных ключей для столбцов, доступные для хранилища сертификатов Windows, хранилища CNG и CSP, зарегистрированы изначально. |
| RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) |
Регистрирует поставщиков хранилища ключей шифрования в экземпляре SqlConnection . Если эта функция была вызвана, все поставщики, зарегистрированные с помощью статических RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) методов, будут игнорироваться. Эту функцию можно вызывать несколько раз. Это делает неглубокое копирование словаря, чтобы приложение не могло изменить настраиваемый список поставщиков после его установки. |
| ResetStatistics() |
Если сбор статистики включен, все значения сбрасываются до нуля. |
| RetrieveInternalInfo() |
Возвращает коллекцию пар значений имени внутренних свойств в момент вызова метода. |
| RetrieveStatistics() |
Возвращает коллекцию пар значений имен статистики в момент вызова метода. |
События
| Имя | Описание |
|---|---|
| InfoMessage |
Происходит, когда SQL Server возвращает предупреждение или информационное сообщение. |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| ICloneable.Clone() |
Создает новый объект, который является копией текущего экземпляра. |