title: Should I be using SqlDataReader inside a "using" statement?
body: <p>Which of the following two examples are correct? (Or which one is better and should I use)</p>
  
  <p>In the MSDN I found this:</p>
  
  <pre><code>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();
     }
  }
  </code></pre>
  
  <p>However looking other pages some users suggest to do it this way:</p>
  
  <pre><code>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]));
                }
            }
         }
     }
  }
  </code></pre>
  
  <p>So, the question is: should I use the <code>using</code> statement also in the <code>SqlCommand</code> and in the <code>SqlDataReader</code> or they are automatically disposed at the end of the <code>SqlConnection</code> <code>using</code> code block.</p>