SqlConnection.Close Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Chiude la connessione al database. È il metodo preferito di chiusura di una connessione aperta.
public:
override void Close();
public override void Close ();
override this.Close : unit -> unit
Public Overrides Sub Close ()
Eccezioni
Errore a livello di connessione che si è verificato durante l'apertura della stessa.
Esempio
Nell'esempio seguente viene creato un SqlConnectionoggetto , che viene aperto, vengono visualizzate alcune delle relative proprietà. La connessione viene chiusa automaticamente alla fine del using
blocco.
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;";
}
}
Commenti
Il metodo esegue il Close rollback di tutte le transazioni in sospeso. Rilascia quindi la connessione al pool di connessioni o chiude la connessione se il pool di connessioni è disabilitato.
Nota
Le transazioni in sospeso avviate con Transact-SQL o BeginTransaction vengono automaticamente ripristinate quando la connessione viene reimpostata se il pool di connessioni è abilitato. Se il pool di connessioni è disattivato, viene eseguito il rollback della transazione dopo SqlConnection.Close
la chiamata. Le transazioni avviate tramite System.Transactions vengono controllate tramite l'infrastruttura System.Transactions
e non sono interessate da SqlConnection.Close
.
Un'applicazione può chiamare Close più volte. Non viene generata alcuna eccezione.
Se l'oggetto esce dall'ambito SqlConnection , non verrà chiuso. Pertanto, è necessario chiudere in modo esplicito la connessione chiamando Close
o Dispose
. Close
e Dispose
sono equivalenti a livello funzionale. Se il valore Pooling
del pool di connessioni è impostato su true
o yes
, la connessione sottostante viene restituita al pool di connessioni. D'altra parte, se Pooling
è impostato su false
o no
, la connessione sottostante al server viene chiusa.
Nota
Nel server non vengono generati eventi di accesso e di disconnessione quando una connessione viene recuperata dal o restituita al pool di connessioni, in quanto la connessione non viene effettivamente chiusa quando viene restituita al pool di connessioni. Per altre informazioni, vedere Pool di connessioni SQL Server (ADO.NET).
Attenzione
Non chiamare Close
o Dispose
su un oggetto Connection, un DataReader o qualsiasi altro oggetto gestito nel Finalize
metodo della classe. In un finalizzatore è consigliabile rilasciare direttamente le risorse non gestite di proprietà della classe. Se nella classe non sono presenti risorse non gestite, non includere un metodo Finalize
nella relativa definizione della classe. Per altre informazioni, vedere Garbage Collection.