问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Asp.net(C#) 获取 执行sql server 语句/存储过程后的 多个返回值?

发布网友 发布时间:2022-05-19 17:06

我来回答

2个回答

懂视网 时间:2022-05-19 21:27

存储过程执行效率比单独的SQL语句效率高。
样编写存储过程?存储过程在SQL Server 2005对应数据库的可编程性目录下。
比如,创建一个存储过程
代码如下:

create procedure procNewsSelectNewNews
as
begin
select top 10 n.id,n.title,n.createTime,c.name from news n
inner join category c on n.caId=c.id
order by n.createTime desc
end

执行定义好的存储过程
exec procNewsSelectNewNews
存储过程返回的是一张表
代码如下:

public DataTable test(string procName)
{
DataTable dt=new DataTable();
cmd=new SqlCommand(procName,GetConn()); //数据库连接和连接开闭,都放在了GetConn()方法中
cmd.CommandType=CommandType.StoredProcedure; //定义SQL语句命令类型为存储过程
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection));//方法将SQL语句发送给SqlConnection并生产一个SqlDataReader类对象,该SqlDataReader对象包含SQL命令返回的数据
{ dt.Load(sdr); //load查询dataread查询的结果 }
return dt;
}

当一个项目中既要用到SQL语句又要用到存储过程的时候,而执行SQL语句和执行存储过程的方法都差不多,就是相差一个CommandType类型,所以如果有这样的情况,我们可以重构关于SQL语句和存储过程这两个方法
代码如下:

public DataTable ExecuteQuery(string sqlText,CommandType ct); //不仅传入SQL语句还传入一个命令类型
{
DataTable dt=new DataTable();
cmd=new SqlCommand(sqlText,GetConn());
cmd.CommandType=ct;
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{ dt.Load(sdr);}
return dt;
}

查询方法写好之后,就可以写SQL语句或存储过程的方法了
比如:存储过程
代码如下:

public DataTable SelectNewNews()
{
return sqlhelper.ExecuteQuery(“存储过程名”,CommandType.StoredProcedure)
}

SQL语句
代码如下:

public DataTable SelectAll()
{
DataTable dt=new DataTable();
string sql=”select * from news”;
dt=sqlhelper.ExecuteQuery(sql,CommandType.Text);·
return dt
}

热心网友 时间:2022-05-19 18:35

如果返回标量值的话,例如文章的个数,可以使用储存过程的输出(OUTPUT)参数。在定义存储过过程时为参数指定OUTPUT关键字。C#调用存储过程时指定参数SqlParameter对象的Direction属性为Output。
如果是返回多个结果集的话,可以直接在存储过程中使用多个select查询就行。在C#代码中使用SqlDataReader对象的NextResult方法提取下一个结果集。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
宝宝被蜱虫叮咬后怎么办? 宝宝被蜱虫咬后该怎么办? 宝宝被蜱虫咬了,要怎么办啊? 宝宝被蜱虫咬了该怎么办? 携程旅行飞机票怎么退 携程旅行退机票手续费介绍 苹果七用ios10.0.01为什么打字 翻照片都炒鸡卡?刚刚买了几天 而且是1... 苹果7怎么老是感觉一顿一顿的 有没有人把苹果手机系统换成ios10之后,老死 QQ会员怎样成为VIP2 胡萝卜,藕,菠菜可以放在一起烧吗? 南瓜、菠菜、莲藕能一起吃吗 藕能和菠菜一起吃吗 波菜和藕可以同时吃吗? 菠菜和藕片可以一起吃吗 菠菜可以和莲藕一起吃吗 菠菜和莲菜能一起吃吗 莲藕可以和菠菜一起吃吗 菠菜和藕能不能在一起吃 菠菜莲藕能一起吃吗 莲藕菠菜能同吃吗 菠菜能和藕一起吃吗 藕和菠菜可以一起吃吗 莲藕菠菜可以同时吃吗 藕和菠菜相克吗? 有什么类似于鼻涕泥,但是没有鼻涕泥那么稀的东西?最好弹性也要好点 水晶泥和养气珠一样吗? 废气鼻涕泥可以做新的水晶泥吗 假水和鼻涕泥的区别? 热水器点火器输入电压最高能承受多少?用手机电池供电行不? 直达特快列车的车次分类 查T80是高铁还是动车 1999年特快火车T80是哪发车? 火车在行驶中变更方向时为什么要更换班次号?有单双号之分? 八十年代的列车车次没有字母,是全数字的,如何区分特快和普快列车? 梦见黑猫咬我手,还说小黑猫是我们自己家养的,花野猫挺干净的来我房间帮我抓老鼠,求大师指点 特快列车是什么? 昨晚梦见两只黑猫咬我的手 昆山社保个人缴纳的明细在哪查询 昆山社保局官网查询 asp.net中怎么先执行sql语句再执行存储过程 出纳现金管理制度 赫拉海洋鱼子紧致弹润睡眠面膜好用吗? 毛戈平奢华鱼子面膜怎么样?好用不? 燕窝鱼子冻龄提拉紧致面膜用水能洗掉吗 话说毛戈平奢华鱼子面膜好用吗? asp.net网站存储过程与sql语句结合使用? 更换平衡杆是换杆还是只换胶套 翼搏平衡杆吊杆多少公里要换 天津中考物理有哪些答题技巧