Прочитать на английском

Поделиться через


SqlConnection.Close Метод

Определение

Закрывает соединение с базой данных. Рекомендуется использовать этот метод для закрытия любого открытого подключения.

public override void Close();
public void Close();

Реализации

Исключения

При открытии подключения произошла ошибка на уровне подключения.

Примеры

В следующем примере создается SqlConnection, открывается и отображаются некоторые его свойства. Соединение автоматически закрывается в конце using блока.

private static void OpenSqlConnection(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("State: {0}", connection.State);
    }
}

Комментарии

Метод Close откатывает все ожидающие транзакции. Затем он освобождает подключение к пулу подключений или закрывает его, если пул подключений отключен.

Примечание

Ожидающие транзакции запускаются с помощью Transact-SQL или BeginTransaction автоматически откатываются при сбросе подключения, если включено использование пулов подключений. Если пул подключений отключен, транзакция откатывается после SqlConnection.Close вызова . Транзакции, запущенные с помощью System.Transactions , контролируются через инфраструктуру System.Transactions и не затрагиваются SqlConnection.Close.

Приложение может вызывать метод Close более одного раза, исключения при этом не возникают.

Если элемент SqlConnection выходит из область, он не будет закрыт. Поэтому необходимо явно закрыть соединение, вызвав Close или Dispose. Close и Dispose функционально эквивалентны. Если значение Pooling пула подключений равно true или yes, базовое подключение возвращается обратно в пул подключений. С другой стороны, если Pooling для задано значение false или no, базовое соединение с сервером закрывается.

Примечание

События входа в систему и выхода из системы не вызываются на сервере при выборке подключения из пула подключений и при возврате его в пул подключений, поскольку при возврате в пул подключений подключение фактически не закрывается. Дополнительные сведения см. в разделе Пулы подключений SQL Server (ADO.NET).

Внимание!

Не вызывайте Close или Dispose для connection, DataReader или любого другого управляемого объекта в методе Finalize класса . В методе завершения следует освобождать только неуправляемые ресурсы, которыми непосредственно владеет ваш класс. Если класс не владеет какими-либо неуправляемыми ресурсами, не включайте в его определение метод Finalize. Дополнительные сведения см. в статье Сборка мусора.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, 6 (package-provided), 7 (package-provided), 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)

См. также раздел