SqlConnection.Close SqlConnection.Close SqlConnection.Close SqlConnection.Close Method

定義

データベースへの接続を閉じます。Closes the connection to the database. このメソッドは、開いている接続を閉じるための最も好ましいメソッドです。This is the preferred method of closing any open connection.

public:
 virtual void Close();
public void Close ();
abstract member Close : unit -> unit
override this.Close : unit -> unit
Public Sub Close ()

実装

例外

接続を開くときに発生した接続レベルのエラー。The connection-level error that occurred while opening the connection.

次の例ではSqlConnection、を作成して開き、そのプロパティの一部を表示します。The following example creates a SqlConnection, opens it, displays some of its properties. 接続はusingブロックの最後に自動的に閉じられます。The connection is automatically closed at the end of the using block.

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は、保留中のトランザクションをロールバックします。The Close method rolls back any pending transactions. 次に、接続プールへの接続を解放するか、接続プールが無効になっている場合は接続を閉じます。It then releases the connection to the connection pool, or closes the connection if connection pooling is disabled.

注意

またはTransact-SQLTransact-SQL BeginTransactionを使用して開始された保留中のトランザクションは、接続プールが有効になっている場合、接続がリセットされると自動的にロールバックされます。Pending transactions started using Transact-SQLTransact-SQL or BeginTransaction are automatically rolled back when the connection is reset if connection pooling is enabled. 接続プールが無効になっている場合は、がSqlConnection.Close呼び出された後にトランザクションがロールバックされます。If connection pooling is off, the transaction is rolled back after SqlConnection.Close is called. からSystem.Transactions開始されたトランザクションはSystem.Transactions 、インフラストラクチャを介して制御さSqlConnection.Closeれ、の影響を受けません。Transactions started through System.Transactions are controlled through the System.Transactions infrastructure, and are not affected by SqlConnection.Close.

アプリケーションが複数回Close呼び出すことができます。An application can call Close more than one time. 例外は生成されません。No exception is generated.

SqlConnectionスコープ外に出ると、閉じられません。If the SqlConnection goes out of scope, it won't be closed. そのため、またはClose Disposeを呼び出して、接続を明示的に閉じる必要があります。Therefore, you must explicitly close the connection by calling Close or Dispose. CloseDisposeは機能的に同等です。Close and Dispose are functionally equivalent. 接続プールの値Poolingがまたはyestrue設定されている場合、基になる接続が接続プールに返されます。If the connection pooling value Pooling is set to true or yes, the underlying connection is returned back to the connection pool. 一方、がまたはPooling nofalse設定されている場合は、サーバーへの基になる接続が閉じられます。On the other hand, if Pooling is set to false or no, the underlying connection to the server is closed.

注意

接続が接続プールからフェッチされたり接続プールに返されたりしたとき、ログイン イベントとログアウト イベントはサーバーで発生しません。これは、接続プールに返されても接続は実際には終了していないためです。Login and logout events will not be raised on the server when a connection is fetched from or returned to the connection pool, because the connection is not actually closed when it is returned to the connection pool. 詳しくは、「SQL Server の接続プール (ADO.NET)」をご覧ください。For more information, see SQL Server Connection Pooling (ADO.NET).

注意事項

クラスのFinalizeメソッドCloseDispose 、接続、DataReader、またはその他のマネージオブジェクトでまたはを呼び出さないでください。Do not call Close or Dispose on a Connection, a DataReader, or any other managed object in the Finalize method of your class. ファイナライザーでは、クラスが直接所有しているアンマネージリソースのみを解放する必要があります。In a finalizer, you should only release unmanaged resources that your class owns directly. クラスがアンマネージ リソースを所有していない場合は、クラス定義に Finalize メソッドを含めないでください。If your class does not own any unmanaged resources, do not include a Finalize method in your class definition. 詳細については、「ガベージコレクション」を参照してください。For more information, see Garbage Collection.

適用対象

こちらもご覧ください