/// <summary> /// 事务方法返回一个sqlscalar 注意查询字段必须唯一且只能为数字 /// </summary> /// <param name="sqlstr">sql语句</param> /// <param name="transaction">数据库事务</param> /// <returns>返回obj可以强制转换为int</returns> public static object tranExecuteScalar(string sqlstr, SqlTransaction transaction) { SqlCommand cmd = transaction.Connection.CreateCommand();//通过transaction的连接Connection创建一个SqlCommand cmd.Transaction = transaction;//元数据分配事务 cmd.CommandType = CommandType.Text; cmd.CommandText = sqlstr; object retval = cmd.ExecuteScalar(); return retval; }
事务方法执行一条sql数据库语句
/// <summary> /// 事务方法执行一条sql语句 /// </summary> /// <param name="sqlstr">sql语句</param> /// <param name="transaction">事务</param> /// <returns></returns> public static int tranExecuteNonQuery(string sqlstr, SqlTransaction transaction) { SqlCommand cmd = transaction.Connection.CreateCommand();//通过transaction的连接Connection创建一个SqlCommand cmd.Transaction = transaction;//分配事务 cmd.CommandType = CommandType.Text; cmd.CommandText = sqlstr; return cmd.ExecuteNonQuery(); }
事务方法插入一条
/// <summary> /// 事务方法插入一条 返回int 插入的KeyId /// </summary> /// <param name="o">object</param> /// <param name="transaction">事务</param> /// <returns></returns> public static int tranInsert(object o, SqlTransaction transaction) { SqlCommand cmd = transaction.Connection.CreateCommand();//通过transaction的连接Connection创建一个SqlCommand cmd.Transaction = transaction;//分配事务 cmd.CommandType = CommandType.Text; cmd.CommandText = "insert " + TableConvention.Resolve(o) + " (" .InjectFrom(new FieldsBy().IgnoreFields("keyid"), o) + ") values(" .InjectFrom(new FieldsBy().IgnoreFields("keyid").SetFormat("@{0}"), o) + ") select @@identity"; cmd.InjectFrom(new SetParamsValues().IgnoreFields("keyid"), o); return Convert.ToInt32(cmd.ExecuteScalar()); }
调用方法
#endregion case "add"://开单 #region 数据库事务 SqlTransaction tran = SqlHelper.BeginTransaction(SqlEasy.connString);//取得一个事务 try { #region 先插入主表 int mainInsertedId = 0;//(主表公用)主表插入的ID string edNumber = common.mjcommon.getedNumberJyd(); JydOrderModel mainModel = new JydOrderModel(); mainModel.InjectFrom(rpm.Entity); mainModel.OrderID = edNumber; //子表赋值给主表 mainModel.allyspmc = rpmA.Entity.yspmc; mainModel.status = "0";//添加之后的默认,可在添加时写入 mainModel.FlowStatus = "0"; string[] arr = edNumber.Split('-'); // 子订单个数数组 mainModel.OrderInt = int.Parse(arr[3]); mainModel.OrderYear = DateTime.Now.ToString("yyyy-MM-dd"); mainModel.jpm= Pinyin.GetCodstring(mainModel.comname).ToLower();//汉字转简拼并小写 mainModel.deptid = int.Parse(SysVisitor.Instance.cookiesUserDepId); mainInsertedId = DbUtils.tranInsert(mainModel, tran);//往主表插入一条 #endregion #region 再插入明细表 //JObject jo = JObject.Parse(detailJson); JArray detailArr = JArray.Parse(detailJson); for (int ii = 0; ii < detailArr.Count; ii++)//循环 { var detailobj = JSONhelper.ConvertToObject<JydOrderDetailModel>(detailArr[ii]["d"].ToString());//根据模型把明细表转化为obj JydOrderDetailModel detailModel = new JydOrderDetailModel();//初始化明细表模型 detailModel.InjectFrom(detailobj);//把obj插入模型 detailModel.orderid = mainModel.OrderID;//orderid关联 detailModel.omainid = mainInsertedId; DbUtils.tranInsert(detailModel, tran);////执行写入明细表 } //生成二维码 string QRCodeUrl = QRCode.Generate(ConfigHelper.GetValue("website")+ "/JydModleOrder/QRCodeView.aspx?KeyID =" + mainInsertedId, @"JydModleOrder\img\gongch.png", DateTime.Now.ToString("yyyyMMdd")); //每添加修改一条数据动态改变二维码 DbUtils.tranExecuteNonQuery("update JydOrder set order_img='" + QRCodeUrl + "' where KeyId=" + mainInsertedId, tran); #endregion tran.Commit();//提交事务 context.Response.Write(1); } catch (Exception e) { tran.Rollback(); WriteLogs.WriteLogsE("Logs", "Error >> GetQRCode", e.Message + " >>> " + e.StackTrace); context.Response.Write(-1); } #endregion //context.Response.Write(JydOrderBll.Instance.Add(rpm.Entity)); break;
Copyright © 2004-2024 Ynicp.com 版权所有 法律顾问:建纬(昆明)律师事务所 昆明市网翼通科技有限公司 滇ICP备08002592号-4