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); } }