文章类型: .NET
关键词: asp.net,C#,SQL,Server,存储过程,output参数值
内容摘要: 通过使用C#语言来调用SQL Server的存储过程来获取output输出参数的值。

ASP.NET C#调用存储过程来获取output参数的值

2015/7/7 17:44:09    来源:apple    阅读:

通过下面的例子代码来说明一下吧!

// 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"];

 

↑ 上一篇文章:SQL字符串处理函数汇总 关键词:SQL,字符串,函数,字符串分割,split 发布日期:2015/7/7 17:42:51
↓ 下一篇文章:如何在IE地址栏用自己的HTML网页favicon.ico图标 关键词:favicon.ico,HTML,IE,网页,搜狗浏览器.. 发布日期:2015/7/7 17:50:06
相关文章:
日期DateTime类型在.net中模糊查询SQL数据库的思路分析 关键词:日期类型,DateTime,C#,.net,模糊查询,like查询,SQL,Server,数据库.. 发布日期:2015-07-14 15:51
查找文章的相关文章的思路分析及实现 关键词:.net,C#,SQL,server,Data,Table,Dictionary按值排序,Arr.. 发布日期:2015-07-14 15:47
vc++中,ado执行sql server存储过程 关键词:vc++中,ado执行sql,server存储过程 发布日期:2016-09-21 16:04
相关目录:.NETJAVA
我要评论
正在加载评论信息......