sqlHelper中DataReader的关闭问题

  我们在借助于sqlHelper使用ExecuteDataReader的时候,是不能立即使用using关键字和自动调用dispose或者close来关闭数据库的连接的。为什么?因为DataReader不像SqlDataAdapter,会将查询到的结果放到一个DataSet中,然后断开与数据库的连接。DataReader必须保持与数据库的长期连接。那么怎么样来使得它在用完之后进行释放呢?ExecuteReader有一个重载的方法,ExecuteReader(CommandBehavior.CloseConnection);

  看下面的一个具体的例子。

public static SqlDataReader ExecuteDataReader(string cmdText,
            params SqlParameter[] parameters)
        {
            SqlConnection conn = new SqlConnection(connstr);
            conn.Open();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = cmdText;
                cmd.Parameters.AddRange(parameters);
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
        }

 

  

posted @ 2012-05-27 18:49  伯箫  阅读(360)  评论(0编辑  收藏  举报