Aracılığıyla paylaş


SqlConnection.Close Yöntem

Tanım

Veritabanı bağlantısını kapatır. Bu, tüm açık bağlantıları kapatmak için tercih edilen yöntemdir.

public:
 override void Close();
public override void Close();
override this.Close : unit -> unit
Public Overrides Sub Close ()

Özel durumlar

Bağlantı açılırken oluşan bağlantı düzeyi hatası.

Örnekler

Aşağıdaki örnek bir SqlConnectionoluşturur, açar ve özelliklerinden bazılarını görüntüler. Bağlantı, bloğun sonunda using otomatik olarak kapatılır.

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;";
    }
}

Açıklamalar

yöntemi, Close bekleyen tüm işlemleri geri alır. Ardından bağlantı havuzu bağlantısını serbest bırakır veya bağlantı havuzu devre dışı bırakılırsa bağlantıyı kapatır.

Not

Bekleyen işlemler Transact-SQL kullanılarak başlatılır veya BeginTransaction bağlantı havuzu etkinleştirildiğinde bağlantı sıfırlandığında otomatik olarak geri alınır. Bağlantı havuzu kapalıysa, işlem çağrıldıktan sonra SqlConnection.Close geri alınır. üzerinden System.Transactions başlatılan işlemler altyapı üzerinden System.Transactions denetlendiğinden etkilenmez SqlConnection.Close.

Bir uygulama birden fazla kez çağrı Close yapabilir. Hiçbir özel durum oluşturulmaz.

SqlConnection kapsam dışına çıkarsa kapatılamaz. Bu nedenle, veya Disposeöğesini çağırarak Close bağlantıyı açıkça kapatmanız gerekir. Close ve Dispose işlevsel olarak eşdeğerdir. Bağlantı havuzu değeri Pooling veya yesolarak ayarlanırsatrue, temel alınan bağlantı yeniden bağlantı havuzuna döndürülür. Öte yandan, veya noolarak ayarlanırsa Poolingfalse, sunucuyla temel alınan bağlantı kapatılır.

Not

Bağlantı havuzuna döndürülürken bağlantı kapatılmadığından veya bağlantı havuzundan bir bağlantı getirildiğinde sunucuda oturum açma ve oturum kapatma olayları tetiklenmez. Daha fazla bilgi için bkz. SQL Server Bağlantı Havuzu (ADO.NET).

Dikkat

Sınıfınızın yönteminde Connection, DataReader veya başka bir yönetilen nesne Finalize çağırmayın CloseDispose veya çağırmayın. Sonlandırıcıda, yalnızca sınıfınızın doğrudan sahip olduğu yönetilmeyen kaynakları serbest bırakmanız gerekir. Sınıfınız yönetilmeyen kaynaklara sahip değilse, sınıf tanımınıza bir Finalize yöntem eklemeyin. Daha fazla bilgi için bkz . Çöp Toplama.

Şunlara uygulanır