SqlConnection.Close メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
データベースへの接続を閉じます。 このメソッドは、開いている接続を閉じるための最も好ましいメソッドです。
public:
override void Close();
public override void Close ();
override this.Close : unit -> unit
Public Overrides Sub Close ()
例外
接続を開くときに発生した接続レベルのエラー。
例
次の例では、 を SqlConnection作成して開き、そのプロパティの一部を表示します。 接続はブロックの末尾で自動的に using
閉じられます。
using Microsoft.Data.SqlClient;
class Program1
{
static void Main()
{
string s = GetConnectionString();
OpenSqlConnection(s);
Console.ReadLine();
}
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);
}
}
static private string GetConnectionString()
{
// To avoid storing the connection string in your code,
// you can retrieve it from a configuration file, using the
// System.Configuration.ConfigurationSettings.AppSettings property
return "Data Source=(local);Initial Catalog=AdventureWorks;"
+ "Integrated Security=SSPI;";
}
}
注釈
Close メソッドは、保留中のすべてのトランザクションをロールバックします。 その後、接続を接続プールに解放するか、接続プールが無効な場合は接続を閉じます。
注意
保留中のトランザクションは、Transact-SQL を使用して開始されるか、接続 BeginTransaction プールが有効になっている場合に接続がリセットされると自動的にロールバックされます。 接続プールがオフの場合、トランザクションは が呼び出された後 SqlConnection.Close
にロールバックされます。 から System.Transactions 開始されたトランザクションはインフラストラクチャを System.Transactions
介して制御され、 の影響を SqlConnection.Close
受けません。
アプリケーションは複数の時刻を呼び出 Close すことができます。 例外は生成されません。
が SqlConnection スコープ外になった場合、閉じられません。 したがって、 または Dispose
を呼び出Close
して、接続を明示的に閉じる必要があります。 Close
と Dispose
は機能的に同等です。 接続プールの値Pooling
が または yes
にtrue
設定されている場合、基になる接続は接続プールに返されます。 一方、 が または no
にfalse
設定されている場合Pooling
、サーバーへの基になる接続は閉じられます。
Note
接続が接続プールからフェッチされたり接続プールに返されたりしたとき、ログイン イベントとログアウト イベントはサーバーで発生しません。これは、接続プールに返されても接続は実際には終了していないためです。 詳しくは、「SQL Server の接続プール (ADO.NET)」をご覧ください。
注意事項
Connection、DataReader、またはDispose
クラスの メソッド内の他のマネージド オブジェクトを呼び出したり、その他のマネージド オブジェクトをFinalize
呼び出Close
したりしないでください。 ファイナライザーでは、クラスが直接所有するアンマネージド リソースのみを解放する必要があります。 クラスがアンマネージ リソースを所有していない場合は、クラス定義に Finalize
メソッドを含めないでください。 詳しくは、「ガベージ コレクション」をご覧ください。