關於調用存儲過程-事務使用

以下代碼示例
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;
            }
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章