1、设置所调用的存储过程需要的参数

public decimal CreateOrder(string orderId, int userId, string address)
{
SqlParameter[] parameters = new SqlParameter[] {
new SqlParameter("@orderId",SqlDbType.NVarChar,),
new SqlParameter("@userId",SqlDbType.Int,),
new SqlParameter("@address",SqlDbType.NVarChar,),
new SqlParameter("@totalPrice",SqlDbType.Money)
};
parameters[].Value = orderId;
parameters[].Value = userId;
parameters[].Value = address;
//设置参数为输出参数,默认是InPut(输入参数)
parameters[].Direction = ParameterDirection.Output;
//调用执行存储过程的方法 DBUtility.DBHelperSQL.ExecuteNonQueryProc("usp_CreateOrder", parameters);
return Convert.ToDecimal(parameters[].Value);
}

关键是设置参数为输出参数,默认是InPut(输入参数)  parameters[3].Direction = ParameterDirection.Output;

2、执行存储过程的方法

public static decimal ExecuteNonQueryProc(string cmdtext, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
//设置SqlCommand的类型为存储过程--StoredProcedure
cmd.CommandType = CommandType.StoredProcedure;
//这个的cmdText是存储过程名
cmd.CommandText = cmdtext;
//给这个存储过程传变量
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
}
}

一开始我有一个疑问,ExecuteNonQuary 方法,返回的是受影响的行数,怎么会把输出的参数传出来?

原来,当你把参数的 Direction 设置为 OutPut 后,把这个参数传给存储过程,那么在存储过程里,这个参数就被赋值了

然后在程序里,调用参数的 Value 属性(parameters[3].Value)得到参数的值

意思就是,这个存储过程只要成功执行了,那么你传进去的那个设置为 OutPut 的参数就已经被赋值了,不用理会 ExecuteNonQuary 方法返回的值,只管运行这个方法就好

最新文章

  1. Notes:SVG(3)---滤镜和渐变
  2. 定时备份SQL SERVER的数据库并且把备份文件复制到另外一台服务器
  3. CentOS下Apache开启Rewrite功能
  4. 12G服务器在BIOS中收集阵列卡日志(TTY日志)的方法
  5. HDU2222 Keywords Search
  6. sed 格式化输出df -h
  7. Javascript 5种方法实现过滤删除前后所有空格
  8. 解决ScrollView 与ListView共存显示不完全的问题
  9. jdk,j2ee,j2se,j2me的概念区别
  10. YY语音从4.0版本开始是基于Qt的开发过程,以及碰到的问题
  11. python的reduce()函数
  12. 每天一个JS 小demo之“随机”抽奖。主要知识点:Math函数,数组方法,递归
  13. DD XOFT虚拟键盘鼠标
  14. Want To Say Something
  15. swift 导入 .a 和 .h 文件
  16. canvas纯绘制雨伞、飞机、五角星、桃心,无逻辑
  17. docker容器启动设置固定IP
  18. java怎么实现统计一个字符串中字符出现的次数
  19. php 函数集锦
  20. php会话控制技术

热门文章

  1. NoSQL数据库技术特性解析之文档数据库
  2. jqgrid设置单元格数据
  3. 织梦安装过后出现"...www/include/templets/default/index.htm Not Found!"
  4. php $_server 整理
  5. 写给新手看的Flask+uwsgi+Nginx+Ubuntu部署教程
  6. Qt: 网络编程之UDP(理论+实例)
  7. Java获取程序或项目路径的常用方法
  8. Android AsynTask更新主界面
  9. 两个bootstrap插件bootstrap-select和bootstrap-paginator
  10. 解读sample2