我应该在“using”语句内使用SqlDataReader吗?

10 浏览
0 Comments

我应该在“using”语句内使用SqlDataReader吗?

下面的两个例子中哪一个是正确的?(或者哪一个更好,我应该使用哪个)

在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();
       // 在访问数据之前调用Read。
       while (reader.Read())
       {
           Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
       }
       // 读取完成后调用Close。
       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())
          {
              // 在访问数据之前调用Read。
              while (reader.Read())
              {
                    Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
              }
          }
       }
   }
}

所以,问题是:我应该在SqlCommand和SqlDataReader中也使用using语句吗?还是它们会在SqlConnection using代码块结束时自动释放?

0