asp.net 数据库存储过程使用 c#

  存储过程和执行普通sql语句很类似,也是可以用SqlCommand及其他多种方式来实现,这里说SqlCommand的方式, 和执行sql方式不同的是设定CmdObj.CommandType = CommandType.StoredProcedure;告诉编译器是执行的存储过程. 怎么输入输出?输入和输出都是使用参数方式, 用CmdObj.Parameters.Add("@chapterTotal", SqlDbType.Int).Direction = ParameterDirection.Output;告诉编译器,@chapterTotal这个参数是输出参数, 输入参数赋值,和获取输出参数见例子. 获取输出结果有2方式, //从连接池中取出一个连接,只要"连接字符串"是相同的,就是从相同的连接池中取连接 SqlConnection myConn = new SqlConnection(application["connString"].ToString()); //建立sql命令对象 SqlCommand CmdObj = new SqlCommand("chapterList", myConn); //存储过程名 连接 CmdObj.CommandType = CommandType.StoredProcedure;//表明执行的内容是存储过程 CmdObj.Parameters.Add("@bookID", SqlDbType.Int).Value =bookID;//添加输入参数,并赋值 CmdObj.Parameters.Add("@bookID1", SqlDbType.Int).Value =44; CmdObj.Parameters.Add("@chapterTotal", SqlDbType.Int).Direction = ParameterDirection.Output; //添加参数,并表明是个输出参数 //打开连接 myConn.Open(); //获得结果,用SqlDataReader方式,既可以以行集方式获取结果,也可以获取单值或值集,但不知道是否可以同时获取行集和单值 SqlDataReader sqlReader = null; sqlReader = CmdObj.ExecuteReader(); if(sqlReader.Read()) { chapterTotal = sqlReader.GetInt16(0); } //获得结果,直接用SqlCommand方式 CmdObj.ExecuteNonQuery(); // chapterTotal = Convert.ToInt32(CmdObj.Parameters["@chapterTotal"].Value); 注意事项: 1,命令参数的名字必须要和存储过程中定义的名字完全一致. 2.使用SqlDataReader方式返回结果时,存储过程中的sql语句不能是返回的值直接赋给输出参数的形式,不然 sqlReader.Read()根本不会成功,如SELECT @ChapterTotal=ChapterTotal FROM BookIndex就不行, SELECT ChapterTotal FROM BookIndex执行用sqlReader.Read()就可以获得 存储过程可以同时返回多个输出参数和多个不同列数的行集,其间要使用union all, 详见http://community.csdn.net/Expert/TopicView3.asp?id=5680198
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值