Должен ли я использовать SqlDataReader внутри оператора «using»?

Какие из следующих двух примеров верны? (Или какой из них лучше, и я должен использовать)

В MSDN я нашел это:

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

Однако, просматривая другие страницы, некоторые пользователи предлагают сделать это следующим образом:

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

Итак, вопрос: я должен использоватьusing Заявление также вSqlCommand и вSqlDataReader или они автоматически располагаются в концеSqlConnection using кодовый блок.

Ответы на вопрос(3)

Ваш ответ на вопрос