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:
 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 ()

Implementuje

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.

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

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 wylogowania nie będą zgłaszane na serwerze, gdy połączenie zostanie pobrane 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 Łączenie połączeń (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

Zobacz też