SqlConnection.Close Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Cierra la conexión con la base de datos. Es el método preferido para cerrar cualquier conexión abierta.
public:
override void Close();
public override void Close ();
override this.Close : unit -> unit
Public Overrides Sub Close ()
Excepciones
Error de nivel de conexión ocasionado al abrir la conexión.
Ejemplos
En el ejemplo siguiente se crea un SqlConnection, se abre, se muestran algunas de sus propiedades. La conexión se cierra automáticamente al final del using
bloque.
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;";
}
}
Comentarios
El Close método revierte las transacciones pendientes. A continuación, libera la conexión al grupo de conexiones o cierra la conexión si la agrupación de conexiones está deshabilitada.
Nota:
Las transacciones pendientes que se inician con Transact-SQL o BeginTransaction se revierten automáticamente cuando se restablece la conexión si la agrupación de conexiones está habilitada. Si la agrupación de conexiones está desactivada, la transacción se revierte después SqlConnection.Close
de llamar a . Las transacciones iniciadas a través System.Transactions de se controlan a través de la System.Transactions
infraestructura y no se ven afectadas por SqlConnection.Close
.
Una aplicación puede llamar a Close más de una vez. No se genera ninguna excepción.
SqlConnection Si sale del ámbito, no se cerrará. Por lo tanto, debe cerrar explícitamente la conexión llamando a Close
o Dispose
. Close
y Dispose
son funcionalmente equivalentes. Si el valor Pooling
de agrupación de conexiones se establece true
en o yes
, la conexión subyacente se devuelve al grupo de conexiones. Por otro lado, si Pooling
se establece false
en o no
, se cierra la conexión subyacente al servidor.
Nota:
Los eventos de inicio y cierre de sesión no se provocarán en el servidor cuando se busque una conexión desde el grupo de conexiones o se devuelva a éste, puesto que la conexión no está cerrada realmente cuando se devuelve al grupo de conexiones. Para obtener más información, vea Agrupación de conexiones de SQL Server (ADO.NET).
Precaución
No llame a Close
o Dispose
en una conexión, un Objeto DataReader o cualquier otro objeto administrado en el método de la Finalize
clase . En un finalizador, solo debe liberar recursos no administrados que su clase posee directamente. Si la clase no dispone de recursos no administrados, no incluya un método Finalize
en la definición de clase. Para obtener más información, consulte Recolección de elementos no utilizados.