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) \(機器翻譯\)。

警告

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

適用於

另請參閱