我们需要使用SqlCommand还是仅仅适用于SqlConnection和SqlDataReader

Omu*_*Omu 5 c# ado.net

我从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));
      }
    }
Run Code Online (Sandbox Code Playgroud)

你可以看到这里没有使用SqlCommand,所以它需要吗?

Joh*_*ers 11

您需要using为您创建的每个对象实现一个IDisposable.这包括SqlCommandSqlConnection.


这条规则很少有例外.主要的例外是WCF客户端代理.由于设计缺陷,他们的Dispose方法有时会抛出异常.如果您在using语句中使用了代理,则第二个异常将导致您丢失原始异常.