SqlConnection.Close Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 SqlConnection, otwiera go, wyświetla niektóre 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 przywraca 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.
Note
Oczekujące transakcje rozpoczęte przy użyciu Transact-SQL lub BeginTransaction są automatycznie wycofywane, gdy połączenie zostanie zresetowane w przypadku włączenia buforowania połączeń. 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 puli 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, bazowe połączenie z serwerem jest zamknięte.
Note
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).
Caution
Nie należy wywoływać Close ani Dispose w połączeniu, w kodzie DataReader ani w żadnym innym zarządzanym obiekcie 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 Zbieranie śmieci.