事先
conn = new SqlConnection(connectionString);
后来用
SqlCommand cmd = new SqlCommand();
cmd.Parameters.Add(……);
……
using(conn)
{
  conn.Open();
  cmd.Connection = conn;
  cmd.CommandType = CommandType.Text;
  cmd.CommandText = strSQL + "SELECT @ID, @ERR";
  cmd.ExecuteReader(……);
}
执行完后,conn关闭了吗?是否需要手动关闭?
这里用using发挥它应发挥的作用了吗?

解决方案 »

  1.   

    过了 using 的范围会自动调用 conn 的Dispose方法,也就是自动关闭了。
      

  2.   

    就是说,conn在using()外定义,但using还对它起作用的,是这样吗?
    (因为以前看到的是using (SqlConnection conn = new SqlConnection(……)) {  },在using内定义)
      

  3.   

    using()相当于 try{}
    finally{}--在这会自动帮你CLOSE(),DISPOSE().....
      

  4.   

    回复人: mayunshui(冰河) ( ) 信誉:100 
    你有没 using(SqlCommand a = new SqlCommand()) 你有没写在里面???
      

  5.   

    是了,我问的焦点就是 using(SqlCommand a = new SqlCommand()) 写在里面与写在外面的区别的
      

  6.   

    conn对象在Using语句外部创建的,在决定使用它时,再将它放在Using语句内,当Using语句结束时,系统就会调用Dispose。
    还有Dispose()后,在内存中还存在,等待Gc来回收。让人感到好像“没放”一样。