SqlConnection..::.Close 方法

本文介绍如何使用System.Data.SqlClient命名空间中的SqlConnection类来关闭数据库连接。文章详细解释了Close方法的作用,包括恢复挂起的事务、释放连接池中的连接以及可能抛出的异常情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

關閉對資料庫的連接。這是關閉任何開啟連接的慣用方法。

命名空間:  System.Data.SqlClient
組件:  System.Data (在 System.Data.dll 中)

Visual Basic (宣告)
Public Overrides Sub Close
Visual Basic (使用方式)
Dim instance As SqlConnection

instance.Close()
C#
public override void Close()
Visual C++
public:
virtual void Close() override
J#
public void Close()
JScript
public override function Close()
實作
IDbConnection..::.Close()()()
例外狀況條件
SqlException

當開啟連接時發生的連接層級錯誤。

Close 方法會復原任何暫止的交易。然後它會釋放對連接集區的連接,或者它會關閉連接 (如果連接共用停用)。

注意事項:

使用 Transact-SQL 或 BeginTransaction 所啟動的暫止交易會自動復原。透過 System.Transactions 啟動的交易是透過 System.Transactions 基礎結構控制,並不受 SqlConnection.Close 影響。

應用程式可以多次呼叫 Close。不會有例外狀況 (Exception) 產生。

如果 SqlConnection 超過範圍,則不會關閉它。因此,您必須呼叫 CloseDispose 以明確關閉連接。CloseDispose 的功能是相等的。如果連接共用 (Connection Pooling) 值 Pooling 設定為 trueyes,則基礎連接就會傳回連接集區。另一方面,如果 Pooling 設定為 falseno,便會關閉伺服器的基礎連接。

注意事項:

從連接集區擷取連接或將連接傳回至連接集區時,伺服器上不會引發登入和登出事件,因為在傳回至連接集區時實際上未關閉連接。如需詳細資訊,請參閱 SQL Server 連接共用 (ADO.NET)

警告:

不要在類別的 Finalize 方法中的 Connection、DataReader 或任何其他 Managed 物件上呼叫 CloseDispose。在完成項中,您應該只釋放您的類別所直接擁有的 Unmanaged 資源。如果您的類別並未擁有任何 Unmanaged 資源,請不要將 Finalize 方法包括在類別定義中。如需詳細資訊,請參閱記憶體回收

下列範例會建立 SqlConnection、開啟它,並顯示其部分屬性。連接會在 using 區域結束時自動關閉。

Visual Basic
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

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);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

葡萄DDS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值