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

  • eisleyhead

    eisleyhead

    11 Ocak 2006
  • GoldgenieOfficial

    GoldgenieOff

    23 Temmuz 2009
  • TomSka

    TomSka

    30 Mayıs 2006