關閉對資料庫的連接。這是關閉任何開啟連接的慣用方法。
命名空間: System.Data.SqlClient
組件: System.Data (在 System.Data.dll 中)

Public Overrides Sub Close
Dim instance As SqlConnection instance.Close()
public override void Close()
public: virtual void Close() override
public void Close()
public override function Close()
實作
IDbConnection..::.Close()()()
例外狀況 | 條件 |
---|---|
SqlException | 當開啟連接時發生的連接層級錯誤。 |

Close 方法會復原任何暫止的交易。然後它會釋放對連接集區的連接,或者它會關閉連接 (如果連接共用停用)。
![]() |
---|
使用 Transact-SQL 或 BeginTransaction 所啟動的暫止交易會自動復原。透過 System.Transactions 啟動的交易是透過 System.Transactions 基礎結構控制,並不受 SqlConnection.Close 影響。 |
應用程式可以多次呼叫 Close。不會有例外狀況 (Exception) 產生。
如果 SqlConnection 超過範圍,則不會關閉它。因此,您必須呼叫 Close 或 Dispose 以明確關閉連接。Close 和 Dispose 的功能是相等的。如果連接共用 (Connection Pooling) 值 Pooling 設定為 true 或 yes,則基礎連接就會傳回連接集區。另一方面,如果 Pooling 設定為 false 或 no,便會關閉伺服器的基礎連接。
![]() |
---|
從連接集區擷取連接或將連接傳回至連接集區時,伺服器上不會引發登入和登出事件,因為在傳回至連接集區時實際上未關閉連接。如需詳細資訊,請參閱 SQL Server 連接共用 (ADO.NET)。 |
![]() |
---|
不要在類別的 Finalize 方法中的 Connection、DataReader 或任何其他 Managed 物件上呼叫 Close 或 Dispose。在完成項中,您應該只釋放您的類別所直接擁有的 Unmanaged 資源。如果您的類別並未擁有任何 Unmanaged 資源,請不要將 Finalize 方法包括在類別定義中。如需詳細資訊,請參閱記憶體回收。 |

下列範例會建立 SqlConnection、開啟它,並顯示其部分屬性。連接會在 using 區域結束時自動關閉。
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); } }