SqlConnection.Close 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
关闭与数据库之间的连接。 此方法是关闭任何打开连接的首选方法。
public:
override void Close();
public:
virtual void Close();
public override void Close ();
public void Close ();
override this.Close : unit -> unit
abstract member Close : unit -> unit
override this.Close : unit -> unit
Public Overrides Sub Close ()
Public Sub Close ()
实现
例外
打开连接时出现的连接级别的错误。
示例
以下示例创建 , SqlConnection打开它,并显示其某些属性。 连接在 块的 using
末尾自动关闭。
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);
}
}
Private Sub OpenSqlConnection(ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
connection.Open()
Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
Console.WriteLine("State: {0}", connection.State)
End Using
End Sub
注解
方法 Close 回滚任何挂起的事务。 然后,它会释放与连接池的连接,或者在禁用连接池的情况下关闭连接。
注意
如果启用了连接池,则使用 Transact-SQL 启动的挂起事务, BeginTransaction 或者在重置连接时自动回滚。 如果连接池处于关闭状态,则调用 后 SqlConnection.Close
将回滚事务。 通过 System.Transactions 启动的事务通过 System.Transactions
基础结构进行控制,不受 影响 SqlConnection.Close
。
一个应用程序可以调用 Close 多个时间。 不会生成异常。
SqlConnection如果 超出范围,则不会关闭。 因此,必须通过调用 Close
或 Dispose
显式关闭连接。
Close
和 Dispose
在功能上是等效的。 如果连接池值 Pooling
设置为 true
或 yes
,则基础连接将返回到连接池。 另一方面,如果 Pooling
设置为 false
或 no
,则关闭与服务器的基础连接。
备注
从连接池中提取连接或将连接返回到连接池时,服务器上不会引发登录和注销事件,这是因为在将连接返回到连接池时实际上并没有将其关闭。 有关详细信息,请参阅 SQL Server 连接池 (ADO.NET)。
注意
不要在 类的 方法中的 Connection、DataReader 或任何其他托管对象上Finalize
调用 Close
或 Dispose
。 在终结器中,应仅释放类直接拥有的非托管资源。 如果类不拥有任何非托管资源,则不要在类定义中包含 Finalize
方法。 有关详细信息,请参阅垃圾回收。