关于调用存储过程-事务使用

来源:互联网 发布:win8.1装ubuntu双系统 编辑:程序博客网 时间:2024/05/22 05:23
以下代码示例public ReturnResponse InsertOrder_Customer(InvoceOrder model)        {                      ReturnResponse result = new ReturnResponse();            var goods_sn = "";   //记录不存在的商品            string allgoods_sn = "";  //记录分录表所有的商品            //开启事务            System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection(connectionString);//这行是仿照我说的那个链接的            System.Data.SqlClient.SqlCommand cm = new System.Data.SqlClient.SqlCommand();//这行是仿照我说的那个链接的            cm.CommandType = CommandType.StoredProcedure;                      cm.Connection = cnn;//这行是仿照我说的那个链接的            cnn.Open();//这行是仿照我说的那个链接的            System.Data.SqlClient.SqlTransaction trans = cnn.BeginTransaction();  //这行是仿照我说的那个链接的            cm.Transaction = trans;                        try            {                var ordersn = CreateKingdeeSn(model.FTranType, model.FROB);                cm.CommandText = "AAProcName";                cm.Parameters.AddWithValue("@FBillNo", model.FBillNo);                cm.Parameters.AddWithValue("@Coustemor", model.Customer);                 cm.ExecuteNonQuery();                var returnval = cm.Parameters["@return"].Value.ToString();                result = getErrorInfo((ErrorCode)Convert.ToInt32(returnval));                //日志                addLog(model.FBillNo + "|" + ordersn, model.FFManager, model.FTranType, result.ErrorCode, result.Msg, result.Success);                //从表                foreach (var m in model.orderList)                {                    goods_sn = m.FNumber;                    cm.CommandText = "AAProcNameEntry";                    cm.Parameters.Clear();                    cm.Parameters.AddWithValue("@FNumber", m.FNumber);                    cm.Parameters.AddWithValue("@UnitName", m.UnitName.Trim());                                      cm.ExecuteNonQuery();                               }                //日志                addLog(allgoods_sn, "", "销售发票分录", result.ErrorCode, result.Msg, result.Success);                trans.Commit();   //提交事务                result.Success = true;                result.ErrorCode = (int)ErrorCode.成功;                result.Msg = ordersn;// "操作成功!";                return result;            }            catch (Exception ex)            {                trans.Rollback();//回滚事务                result.Success = false;                result.ErrorCode = (int)ErrorCode.数据操作异常;                var Msg = "数据操作异常:" + ex.Message;                result.Msg = "系统正忙,请稍后再试";                addLog(model.FBillNo, model.FFManager, model.FTranType, result.ErrorCode, Msg, result.Success);                             return result;            }        }