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