SORU
17 Ocak 2011, PAZARTESİ


"kullanarak" blok SqlConnection iade veya özel kapalı mı?

İlk soru:
Var

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();
}

Bağlantı kapalı mı? Çünkü teknik olarak hiç bir zaman son 5 ** } Daha önce.

İkinci soru:
Bu sefer var:

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) { /*Handle error*/ }

Şimdi, bir yerde try bir hata alırız ve yakalandı diyelim ki. Bağlantı hala kapalı mı? Çünkü yine biz try kod kalanını atlayın ve doğrudan catch bildirimi.

Çok doğrusal using nasıl düşünüyorum? ıe Dispose() sadece using kapsamında gittiğimiz zaman aradı?

CEVAP
17 Ocak 2011, PAZARTESİ


  1. Evet
  2. Evet.

Using blok çıkıldığı zaman her iki şekilde de, (ya da hata ile başarılı bir şekilde tamamlanması veya kapalı).

Olacağını düşünüyorum rağmendaha iyiçok daha kolay olacak ne olduğunu görmek için, çünkü bu şekilde organize etmek için, daha sonra destek verecek olan yeni bir bakım programcı için bile

using (SqlConnection connection = new SqlConnection(connectionString)) 
{    
  int employeeID = findEmployeeID();    
  try    
  {

            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) 
   { 
      /*Handle error*/ 
   }

}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chrmoe

    chrmoe

    7 Kasım 2006
  • pucksz

    pucksz

    24 Mart 2006
  • sWooZie

    sWooZie

    9 ŞUBAT 2006