在.NET C# 中如何处理返回SqlDataReader类型的

来源:百度知道 编辑:UC知道 时间:2024/05/06 20:40:42
public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);

// 在这里使用try/catch处理是因为如果方法出现异常,则SqlDataReader就不存在,
//CommandBehavior.CloseConnection的语句就不会执行,触发的异常由catch捕获。
//关闭数据库连接,并通过throw再次引发捕捉到的异常。
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
======================================
这个是返回的
然后我是
SqlDataAdapter sdr = SqlHelper.ExecuteReader(....)
然后用sdr读

为什么要返回SqlDataReader 呢, 这样的话数据库连接在数据层都不能关闭,只能在前台关闭reader,这要不好,建议返回List<T>

你的这代码,返回的是reader,使用时为什么又变成SqlDataAdapter 呢,应该还是SqlDataReader呀
using(SqlDataReader sdr = SqlHelper.ExecuteReader(....))
{
if(sdr.read())
{
sdr[0].ToString();
}

}

System.Data.SqlClient.SqlDataReader dr= DateOp.GetAllDate(sql);
if (dr.HasRows)
{
int i = 0;
while (dr.Read())
{
lst.Add( dr[0].ToString());
i++;
}
dr.Close();
return lst;
}