我们需要用于SqlCommand还是仅用于SqlConnection和SqlDataReader就足够了 [英] do we need using for the SqlCommand or is it enough just for the SqlConnection and SqlDataReader
问题描述
我从 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没有用
as you can see there is no using for the SqlCommand here, so, does it needs to be ?
推荐答案
您需要使用
为您创建的每个实现 IDisposable
的对象。其中包括 SqlCommand
和 SqlConnection
。
You need a using
for every object you create that implements IDisposable
. That includes the SqlCommand
and the SqlConnection
.
此规则很少有例外。主要例外是WCF客户端代理。由于设计缺陷,其 Dispose
方法有时会引发异常。如果您在 using
语句中使用了代理,则第二个异常将导致您丢失原始异常。
There are very few exceptions to this rule. The main exception is WCF client proxies. Due to a design flaw, their Dispose
method can sometimes throw an exception. If you used the proxy in a using
statement, this second exception would cause you to lose the original exception.
这篇关于我们需要用于SqlCommand还是仅用于SqlConnection和SqlDataReader就足够了的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!