文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C#调用存储过程,获取 output 参数

C#调用存储过程,获取 output 参数

时间:2011-04-27  来源:Dreamer57

     // C#调用存储过程
public Hashtable GetAmount(string userId)
{
string procedureName = "SP_GetAmount";
SqlParameter[] param
= new SqlParameter[] { new SqlParameter("@AllAmount", SqlDbType.Decimal), new SqlParameter("@MonthAmount", SqlDbType.Decimal), new SqlParameter("@UserID", userId) };
param[
2].Direction = ParameterDirection.Input;  // 设置输入参数
param[
0].Direction = ParameterDirection.Output; // 输出参数 这里故意把位置能乱,为了说明C#调用存储过程参数是以 名称=参数 匹配的
param[
1].Direction = ParameterDirection.Output; // 注意输出参数 必须 new SqlParameter("@MonthAmount", SqlDbType.Decimal) 设定DbType

return new DBHelper().RunProcedure(procedureName, param);
}
  
     // DBHelper 中 RunProcedure 函数内容
     
public Hashtable RunProcedure(String procedureName, IDataParameter[] parameters)
{
Hashtable result = new Hashtable();
try
{
using (SqlConnection connection = this.Connection)
{
using (SqlCommand cmd = new SqlCommand(procedureName, connection))
{
         // 注意这里要把CommandType设为StoredProcedure解析为存储过程
         // 也可默认为Text 以SQL语句模式解析,这样调用存储过程就要用SQL语句 EXEC <存储过程名> <参数...> 写 SQL 语句调用
cmd.CommandType = CommandType.StoredProcedure;
if (parameters != null)
{
cmd.Parameters.AddRange(parameters);
}
cmd.ExecuteNonQuery();
foreach (SqlParameter param in cmd.Parameters)
{
           // 这里把输出参数放到一个 HashTable 里面,方便取出
if (param.Direction == ParameterDirection.Output || param.Direction == ParameterDirection.InputOutput || param.Direction == ParameterDirection.ReturnValue)
{
result.Add(param.ParameterName, param.Value);
}
}
}
}
}
catch (Exception)
{
return null;
}
return result;
}

   // 取出 output 参数时
   Hashtable amount = orderBIZ.GetAmount(Request.Cookies["LoginUser"].Value);
ViewData["AllAmount"] = amount["@AllAmount"];  // 取出 output 参数
ViewData["MonthAmount"] = amount["@MonthAmount"];

非常幼稚的东西了,都不好意思发了,不过还是发了 - -

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载