SqlConnection.Close Method
Closes the connection to the database. This is the preferred method of closing any open connection.
Assembly: System.Data (in System.Data.dll)
| Exception | Condition |
|---|---|
| SqlException |
The connection-level error that occurred while opening the connection. |
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. |
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.
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
- 4/12/2012
- SlimShaggy
- 3/31/2012
- Akinfi
The connection is automatically closed at the end of the using block
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.close.aspx
I used this assumption in my code and ended up with the error
Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
- 12/3/2010
- msollicito
Note
Caution