SqlConnection.Close Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Ferme la connexion à la base de données. C'est la méthode recommandée de fermeture d'une connexion ouverte.
public:
override void Close();
public override void Close ();
override this.Close : unit -> unit
Public Overrides Sub Close ()
Exceptions
Erreur de connexion qui s’est produite lors de l’établissement de la connexion.
Exemples
L’exemple suivant crée un SqlConnection, l’ouvre, affiche certaines de ses propriétés. La connexion est automatiquement fermée à la fin du using
bloc.
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;";
}
}
Remarques
La Close méthode restaure toutes les transactions en attente. Il libère ensuite la connexion au pool de connexions ou ferme la connexion si le regroupement de connexions est désactivé.
Notes
Les transactions en attente démarrées à l’aide de Transact-SQL ou BeginTransaction sont automatiquement restaurées lorsque la connexion est réinitialisée si le regroupement de connexions est activé. Si le regroupement de connexions est désactivé, la transaction est restaurée après SqlConnection.Close
l’appel. Les transactions démarrées via System.Transactions sont contrôlées via l’infrastructure System.Transactions
et ne sont pas affectées par SqlConnection.Close
.
Une application peut appeler Close plusieurs fois. Aucune exception n’est générée.
Si le SqlConnection sort de l’étendue, il ne sera pas fermé. Par conséquent, vous devez fermer explicitement la connexion en appelant Close
ou Dispose
. Close
et Dispose
sont fonctionnellement équivalents. Si la valeur Pooling
de regroupement de connexions est définie sur true
ou yes
, la connexion sous-jacente est retournée au pool de connexions. En revanche, si Pooling
est défini sur false
ou no
, la connexion sous-jacente au serveur est fermée.
Notes
Les événements de connexion et de déconnexion ne seront pas déclenchés sur le serveur si une connexion est récupérée depuis le pool de connexions ou qu’elle est retournée au pool, car elle n’est pas réellement fermée lorsqu’elle est retournée au pool. Pour plus d’informations, consultez Regroupement de connexions SQL Server (ADO.NET).
Attention
N’appelez Close
pas ou Dispose
sur une connection, un DataReader ou tout autre objet managé dans la Finalize
méthode de votre classe. Dans un finaliseur, vous devez libérer uniquement les ressources non managées que votre classe possède directement. Si votre classe ne possède pas de ressource non managée, n'incluez pas une méthode Finalize
dans la définition de classe. Pour plus d’informations, consultez Nettoyage de la mémoire.