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


SqlConnection.Close Метод

Определение

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

public:
 override void Close();
public:
 virtual void Close();
public override void Close ();
public void Close ();
override this.Close : unit -> unit
abstract member Close : unit -> unit
override this.Close : unit -> unit
Public Overrides Sub Close ()
Public Sub 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);
    }
}
Private Sub OpenSqlConnection(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("State: {0}", connection.State)
    End Using
End Sub

Комментарии

Метод 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. Дополнительные сведения см. в статье Сборка мусора.

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

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