SqlConnection.Close Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Closes the connection to the database. This is the preferred method of closing any open connection.
public:
override void Close();
public override void Close ();
override this.Close : unit -> unit
Public Overrides Sub Close ()
Exceptions
The connection-level error that occurred while opening the connection.
Examples
The following example creates a SqlConnection, opens it, displays some of its properties. The connection is automatically closed at the end of the using
block.
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;";
}
}
Remarks
The Close method rolls back any pending transactions. It then releases the connection to the connection pool, or closes the connection if connection pooling is disabled.
Note
Pending transactions started using Transact-SQL or BeginTransaction are automatically rolled back when the connection is reset if connection pooling is enabled. If connection pooling is off, the transaction is rolled back after SqlConnection.Close
is called. Transactions started through System.Transactions are controlled through the System.Transactions
infrastructure, and are not affected by SqlConnection.Close
.
An application can call Close more than one time. No exception is generated.
If the SqlConnection goes out of scope, it won't be closed. Therefore, you must explicitly close the connection by calling Close
or Dispose
. Close
and Dispose
are functionally equivalent. If the connection pooling value Pooling
is set to true
or yes
, the underlying connection is returned back to the connection pool. On the other hand, if Pooling
is set to false
or no
, the underlying connection to the server is closed.
Note
Login and logout events will not be raised on the server when a connection is fetched from or returned to the connection pool, because the connection is not actually closed when it is returned to the connection pool. For more information, see SQL Server Connection Pooling (ADO.NET).
Caution
Do not call Close
or Dispose
on a Connection, a DataReader, or any other managed object in the Finalize
method of your class. In a finalizer, you should only release unmanaged resources that your class owns directly. If your class does not own any unmanaged resources, do not include a Finalize
method in your class definition. For more information, see Garbage Collection.