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 时,注意数据类型转换要和数据库中对应的类型匹配。
322

被折叠的 条评论
为什么被折叠?



