我从msdn
获取此代码string connString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;";
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT CustomerId, CompanyName FROM Customers";
conn.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
Console.WriteLine("{0}\t{1}", dr.GetString(0), dr.GetString(1));
}
}
你可以看到这里没有使用SqlCommand,所以,它需要吗?
答案 0 :(得分:10)
您创建的每个实现using
的对象都需要IDisposable
。其中包括SqlCommand
和SqlConnection
。
此规则的例外情况非常少。主要的例外是WCF客户端代理。由于设计缺陷,他们的Dispose
方法有时会抛出异常。如果您在using
语句中使用了代理,则第二个异常将导致您丢失原始异常。
答案 1 :(得分:4)
您没有需要来使用using语句,但这是一种很好的做法,您应该使用它。它允许使用IDisposable的对象自动处理。
http://msdn.microsoft.com/en-us/library/yh598w02(VS.80).aspx
编辑添加链接并删除不准确的声明,因为@John Saunders是对的。