我应该在“using”语句内使用SqlDataReader吗?
我应该在“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代码块结束时自动释放?