SqlConnection.Close 方法

定义

关闭与数据库的连接。 这是关闭任何打开连接的首选方法。

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如果超出范围,则不会关闭它。 因此,必须通过调用 CloseDispose. CloseDispose 功能上是等效的。 如果连接池值 Pooling 设置为 trueyes已返回基础连接,则返回到连接池。 另一方面,如果 Pooling 设置为 falseno关闭与服务器的基础连接。

注释

从连接池中提取连接或将连接返回到连接池时,服务器上不会引发登录和注销事件,这是因为在将连接返回到连接池时实际上并没有将其关闭。 有关详细信息,请参阅 SQL Server 连接池(ADO.NET)

Caution

请勿在类的方法中Close调用或Dispose调用 Finalize Connection、DataReader 或任何其他托管对象。 在终结器中,应仅释放类直接拥有的非托管资源。 如果类不拥有任何非托管资源,则不要在类定义中包含 Finalize 方法。 有关详细信息,请参阅垃圾回收

适用于

另请参阅