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

  • CaliforniaMetin

    CaliforniaMe

    3 ŞUBAT 2013
  • Christopher Bill

    Christopher

    30 NİSAN 2009
  • RaverX DouBle StAg XI

    RaverX DouBl

    23 Mayıs 2008