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 , 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.