Rumah > pembangunan bahagian belakang > C++ > Adakah SqlConnection Ditutup dalam Blok 'Menggunakan' pada Pulangan atau Pengecualian?

Adakah SqlConnection Ditutup dalam Blok 'Menggunakan' pada Pulangan atau Pengecualian?

DDD
Lepaskan: 2025-01-15 16:57:44
asal
538 orang telah melayarinya

Does SqlConnection Close in a

using Tingkah laku penutup SqlConnection dalam blok pernyataan: mengembalikan nilai dan pengecualian

using Adakah blok penyata akan ditutup SqlConnection apabila dikembalikan atau pengecualian? Mari terokai tingkah laku ini:

Soalan pertama:

Dalam blok kod berikut:

<code class="language-csharp">using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    string storedProc = "GetData";
    SqlCommand command = new SqlCommand(storedProc, connection);
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));

    return (byte[])command.ExecuteScalar();
}</code>
Salin selepas log masuk

Jawapan: Ya, sambungan akan ditutup.

Blok pernyataan

using memastikan bahawa IDisposable sumber (iaitu SqlConnection) dikeluarkan dengan betul walaupun sekiranya pemulangan awal. Apabila kod keluar dari blok using, kaedah Dispose() (yang menutup sambungan) dipanggil secara automatik.

Soalan kedua:

Dalam blok kod ini:

<code class="language-csharp">try
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        int employeeID = findEmployeeID();

        connection.Open();
        SqlCommand command = new SqlCommand("UpdateEmployeeTable", connection);
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));
        command.CommandTimeout = 5;

        command.ExecuteNonQuery();
    }
}
catch (Exception) { /*处理错误*/ }</code>
Salin selepas log masuk

Jawapan: Ya, sambungan masih akan ditutup.

Walaupun pengecualian dilemparkan dalam blok pernyataan using, kod akan segera melompat ke blok catch dan apabila keluar dari blok pernyataan using, SqlConnection masih akan dikeluarkan.

Ringkasan:

Tidak kira sama ada blok pernyataan using keluar melalui nilai pulangan atau pengecualian, SqlConnection akan sentiasa ditutup untuk memastikan pembersihan sumber.

Atas ialah kandungan terperinci Adakah SqlConnection Ditutup dalam Blok 'Menggunakan' pada Pulangan atau Pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan