c# 操作sqlsever存储过程返回分享

 public class ProcedureResult
 {
     public bool Success { get; set; }
     public string ErrorMessage { get; set; }
 }

 public ProcedureResult Exc_Procedure (string MC, DynamicParameters para)
 {
     var result = new ProcedureResult();

     using (var conn = GetCon())
     {
         conn.Open();
         using (var transaction = conn.BeginTransaction())
         {
             try
             {
                 string storedProcedureName = MC;
                 conn.Execute(storedProcedureName, para, commandType: CommandType.StoredProcedure, transaction: transaction);
                 transaction.Commit();
                 result.Success = true;
                 return result;
             }
             catch (SqlException sqlEx)
             {
                 transaction.Rollback();
                 result.Success = false;
                 result.ErrorMessage = $"数据库错误({sqlEx.Number}): {sqlEx.Message}";
                 return result;
             }
             catch (Exception ex)
             {
                 transaction.Rollback();
                 result.Success = false;
                 result.ErrorMessage = $"系统错误: {ex.Message}";
                 return result;
             }
         }
     }
 }

调用方法

 var para = new DynamicParameters();   //// 设置参数,包括输出参数 
 para.Add("@param1", 传参1 );
 para.Add("@param2", 传参2);

 var result = new ProcedureResult();
 result = Exc_Procedure("存储过程名称", para);

 if (result.Success)
 {
    
  //成功后的操作动作

 }
 else
 {
     // 失改后弹窗提示  这里是fineui的提示框,可换成其它
     ShowNotify(result.ErrorMessage, MessageBoxIcon.Warning);
 }

这段代码展示了一个通用的存储过程调用方法Exc_Procedure,它实现了事务处理、错误捕获和结果返回的功能。方法接收存储过程名称和动态参数,通过try-catch块确保事务完整性,成功时提交事务,失败时回滚并返回错误信息。调用示例演示了如何设置参数、处理返回结果,包括成功后的操作和失败时的错误提示(使用FineUI提示框)。该实现支持动态多参数赋值,提供了完整的错误处理机制,适用于各种存储过程调用场景。

注意的地方:

 para.Add("@param1", 传参1 );
 para.Add("@param2", 传参2);

传参1或传参2 时,注意数据类型转换要和数据库中对应的类型匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值