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

publicstaticSqlDataReaderExecuteReader(stringconnectionString,CommandTypecmdType,stri... 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读取数据库的字段没有提示
sdr["xxx"]
VS里没有弹出参数的提示
如果我在上面的函数里写rdr[""] VS却提示?
最终目的还是在返回后调用指定的字段数据,不要在函数里搞
展开
 我来答
chwu1
推荐于2016-09-01 · TA获得超过380个赞
知道小有建树答主
回答量:402
采纳率:0%
帮助的人:257万
展开全部
为什么要返回SqlDataReader 呢, 这样的话数据库连接在数据层都不能关闭,只能在前台关闭reader,这要不好,建议返回List<T>

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

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
声鸾U1
2009-08-11 · TA获得超过651个赞
知道小有建树答主
回答量:1195
采纳率:33%
帮助的人:499万
展开全部
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式