SqlConnection.Close SqlConnection.Close SqlConnection.Close SqlConnection.Close Method

Определение

Закрывает соединение с базой данных.Closes the connection to the database. Рекомендуется использовать этот метод для закрытия любого открытого подключения.This is the preferred method of closing any open connection.

public:
 virtual void Close();
public void Close ();
abstract member Close : unit -> unit
override this.Close : unit -> unit
Public Sub Close ()

Реализации

Исключения

При открытии подключения произошла ошибка на уровне подключения.The connection-level error that occurred while opening the connection.

Примеры

Следующий пример создает SqlConnection, открывает его, отображает некоторые из его свойств.The following example creates a SqlConnection, opens it, displays some of its properties. Соединение автоматически закрывается в конце using блока.The connection is automatically closed at the end of the using block.

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 Метод выполняет откат всех ожидающих транзакций.The Close method rolls back any pending transactions. Затем он освобождает подключение к пулу подключений или закрывает подключение, если пул соединений отключен.It then releases the connection to the connection pool, or closes the connection if connection pooling is disabled.

Примечание

Отложенные транзакции, Transact-SQLTransact-SQL запущенные с помощью или BeginTransaction , автоматически откатываются при сбросе соединения, если включено использование пулов соединений.Pending transactions started using Transact-SQLTransact-SQL or BeginTransaction are automatically rolled back when the connection is reset if connection pooling is enabled. Если пул соединений отключен, то после SqlConnection.Close вызова транзакции выполняется ее откат.If connection pooling is off, the transaction is rolled back after SqlConnection.Close is called. Транзакции, запущенные через System.Transactions , контролируются System.Transactions инфраструктурой SqlConnection.Closeи не затрагиваются.Transactions started through System.Transactions are controlled through the System.Transactions infrastructure, and are not affected by SqlConnection.Close.

Приложение может вызывать Close более одного раза.An application can call Close more than one time. Исключение не создается.No exception is generated.

SqlConnection Если выходит из области, оно не будет закрыто.If the SqlConnection goes out of scope, it won't be closed. Поэтому необходимо явно закрыть соединение, вызвав Close или. DisposeTherefore, you must explicitly close the connection by calling Close or Dispose. Closeфункции Dispose и функционально эквивалентны.Close and Dispose are functionally equivalent. Если для Pooling true параметра пулы соединений задано значение или yes, то базовое соединение возвращается в пул соединений.If the connection pooling value Pooling is set to true or yes, the underlying connection is returned back to the connection pool. С другой стороны, если Pooling параметр имеет false значение или no, то базовое соединение с сервером закрыто.On the other hand, if Pooling is set to false or no, the underlying connection to the server is closed.

Примечание

События входа в систему и выхода из системы не вызываются на сервере при выборке подключения из пула подключений и при возврате его в пул подключений, поскольку при возврате в пул подключений подключение фактически не закрывается.Login and logout events will not be raised on the server when a connection is fetched from or returned to the connection pool, because the connection is not actually closed when it is returned to the connection pool. Дополнительные сведения см. в разделе Пулы подключений SQL Server (ADO.NET).For more information, see SQL Server Connection Pooling (ADO.NET).

Внимание!

Не вызывайте Close или Dispose для соединения, DataReader или любого Finalize другого управляемого объекта в методе класса.Do not call Close or Dispose on a Connection, a DataReader, or any other managed object in the Finalize method of your class. В методе завершения следует освобождать только неуправляемые ресурсы, непосредственно принадлежащие классу.In a finalizer, you should only release unmanaged resources that your class owns directly. Если класс не владеет какими-либо неуправляемыми ресурсами, не включайте в его определение метод Finalize.If your class does not own any unmanaged resources, do not include a Finalize method in your class definition. Дополнительные сведения см. в разделе Сборка мусора.For more information, see Garbage Collection.

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

Дополнительно