Sollte ich SqlDataReader innerhalb einer "using" -Anweisung verwenden?

Welche der beiden folgenden Beispiele sind korrekt? (Oder welches ist besser und sollte ich verwenden)

In der MSDN fand ich dies:

private static void ReadOrderData(string connectionString)
{
   string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;"

   using (SqlConnection connection = new SqlConnection(connectionString))
   {
       SqlCommand command = new SqlCommand(queryString, connection);
       connection.Open();

       SqlDataReader reader = command.ExecuteReader();

       //Call Read before accessing data.
       while (reader.Read())
       {
           Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
       }

       //Call Close when done reading.
       reader.Close();
   }
}

Jedoch suchen andere Seiten einige Nutzer empfehlen, es zu tun auf diese Weise:

private static void ReadOrderData(string connectionString)
{
   string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;";

   using (SqlConnection connection = new SqlConnection(connectionString))
   {
       using (SqlCommand command = new SqlCommand(queryString, connection))
       {
          connection.Open();

          using (SqlDataReader reader = command.ExecuteReader())
          {
              //Call Read before accessing data.
              while (reader.Read())
              {
                    Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
              }
          }
       }
   }
}

So, die Frage ist: sollte ich das using - Anweisung auch in der SqlCommand und in der SqlDataReader oder Sie werden automatisch entsorgt am Ende der SqlConnection using code-block.

InformationsquelleAutor der Frage Keoki | 2013-02-07

Schreibe einen Kommentar