Udostępnij za pośrednictwem


SqlConnection.Close Metoda

Definicja

Zamyka połączenie z bazą danych. Jest to preferowana metoda zamykania dowolnego otwartego połączenia.

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

Wyjątki

Błąd na poziomie połączenia, który wystąpił podczas otwierania połączenia.

Przykłady

Poniższy przykład tworzy obiekt , otwiera SqlConnectiongo, wyświetla niektóre z jego właściwości. Połączenie jest automatycznie zamykane na końcu using bloku.

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

Uwagi

Metoda Close cofa wszystkie oczekujące transakcje. Następnie zwalnia połączenie z pulą połączeń lub zamyka połączenie, jeśli buforowanie połączeń jest wyłączone.

Uwaga

Oczekujące transakcje zaczęły korzystać z języka Transact-SQL lub BeginTransaction są automatycznie wycofywane po zresetowaniu połączenia, jeśli pula połączeń jest włączona. Jeśli buforowanie połączeń jest wyłączone, transakcja zostanie wycofana po SqlConnection.Close wywołaniu. Transakcje uruchamiane przez System.Transactions usługę System.Transactions są kontrolowane za pośrednictwem infrastruktury i nie mają na nie wpływu .SqlConnection.Close

Aplikacja może wywołać Close więcej niż jeden raz. Nie jest generowany wyjątek.

SqlConnection Jeśli element wykracza poza zakres, nie zostanie zamknięty. W związku z tym należy jawnie zamknąć połączenie przez wywołanie Close metody lub Dispose. Close i Dispose są funkcjonalnie równoważne. Jeśli wartość Pooling buforowania połączeń jest ustawiona na true lub yes, połączenie bazowe zostanie zwrócone z powrotem do puli połączeń. Z drugiej strony, jeśli Pooling jest ustawiona na false lub no, podstawowe połączenie z serwerem jest zamknięte.

Uwaga

Zdarzenia logowania i wylogowywanie nie będą zgłaszane na serwerze, gdy połączenie zostanie pobrane z puli połączeń lub zwrócone do puli połączeń, ponieważ połączenie nie zostanie faktycznie zamknięte po powrocie do puli połączeń. Aby uzyskać więcej informacji, zobacz SQL Server Connection Pooling (ADO.NET).

Przestroga

Nie należy wywoływać Close ani Dispose w przypadku elementu Connection, elementu DataReader ani żadnego innego zarządzanego obiektu w Finalize metodzie klasy . W finalizatorze należy zwolnić tylko niezarządzane zasoby, które należą do klasy bezpośrednio. Jeśli klasa nie jest właścicielem żadnych zasobów niezarządzanych, nie dołączaj Finalize metody do definicji klasy. Aby uzyskać więcej informacji, zobacz Odzyskiwanie pamięci.

Dotyczy