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


SqlConnection.Close Метод

Определение

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

public:
 override void Close();
public override void Close ();
override this.Close : unit -> unit
Public Overrides Sub Close ()

Исключения

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

Примеры

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

using Microsoft.Data.SqlClient;

class Program1
{
    static void Main()
    {
        string s = GetConnectionString();

        OpenSqlConnection(s);
        Console.ReadLine();
    }

    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);
        }
    }

    static private string GetConnectionString()
    {
        // To avoid storing the connection string in your code, 
        // you can retrieve it from a configuration file, using the 
        // System.Configuration.ConfigurationSettings.AppSettings property 
        return "Data Source=(local);Initial Catalog=AdventureWorks;"
            + "Integrated Security=SSPI;";
    }
}

Комментарии

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

Примечание

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

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

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

Примечание

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

Внимание!

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

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