SqlConnection.Close 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
關閉了與資料庫的連線。 這是關閉任何開路連接的首選方法。
public:
virtual void Close();
public:
override void Close();
public void Close();
public override void Close();
abstract member Close : unit -> unit
override this.Close : unit -> unit
override this.Close : unit -> unit
Public Sub Close ()
Public Overrides 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 方法會回滾所有待處理的交易。 接著會釋放連線至連線池,或在關閉連線池時關閉連線。
Note
使用 Transact-SQL 或 BeginTransaction 啟動的待處理交易,若啟用連線池,連線重置時會自動回滾。 如果連線池關閉,交易會在呼叫後 SqlConnection.Close 回滾。 透過 開始 System.Transactions 的交易由基礎設施控制 System.Transactions ,不受 影響 SqlConnection.Close。
一個應用程式可以呼叫 Close 不只一次。 不會產生例外。
如果超出 SqlConnection 範圍,案件不會被關閉。 因此,你必須明確地透過呼叫 Close 或 Dispose來關閉這個連線。
Close 與 Dispose 在功能上等價。 若連線池值 Pooling 設為 true 或 yes,底層連線會回傳至連線池。 另一方面,若 Pooling 設為 false 或 no,則與伺服器的底層連線即為關閉。
Note
從連接集區中擷取連接或將連接傳回連接集區時,系統不會在伺服器上引發登入和登出事件,因為當連接傳回連接集區時,連接實際上並未關閉。 如需詳細資訊,請參閱 SQL Server 連線共用 (ADO.NET)。
注意事項
不要在你的類別方法中呼叫 Close 或 Dispose 在 Connection、DataReader 或其他受管理物件 Finalize 上。 在終結者中,你應該只釋放你職業直接擁有的未管理資源。 如果你的類別沒有擁有任何非管理資源,請不要在類別定義中包含某個 Finalize 方法。 如需詳細資訊,請參閱垃圾回收(Garbage Collection, GC)。