DataRead到底怎样关闭才算真的关闭了呢?
我有  SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);逻辑层使用完DataRead.Close(); 可是我发现还是不行。 虽然没有报错。原因如下:  我有个项目,涉及的数据比较多 又1W多条。 我在数据层关闭了
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Close();
虽然报错, 不过我直接抛弃了它(这个不是取得数据的方法), 取得的数据速度很快。 
如果我不关闭它, 这个程序多执行两次以后  在查询很多数据时出现延时非常厉害,没有修改
SqlCommand com = new SqlCommand(ProcedureName, con);
com.CommandTimeout = 180;
的时候出现服务器反应超时的错误由此可见 是这个DataRead关闭的问题。
如何才能真正关闭这个DataRead呢?
另外补充下:
   我还想知道
{
   SqlCommand com = new SqlCommand(ProcedureName, con);

}
 finally
{
  if (con.State != ConnectionState.Closed)
  con.Close();
}
/*
finally最后都默认关闭了。 C#是不是不需要自己手动去关闭这些东西呢?

解决方案 »

  1.   

    学会或用usingusing(SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
    {
        //代码块
    }
      

  2.   

    SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    while(rdr.read())
    {
       ...
    }
    rdr.Close();
      

  3.   

    虽然对你的描述不是很清楚,不过我的习惯是用USING.
      

  4.   

    我有  SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);逻辑层使用完DataRead.Close(); 可是我发现还是不行。 虽然没有报错。 你定义的rdr,关闭时怎么用datareader.close()??应该直接用rdr.Close()这样就把DR给关掉了.