예제 #1
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="rec">操作值</param>
        /// <param name="transaction">是否启用事务</param>
        /// <param name="rex">返回值</param>
        /// <returns></returns>
        public ReResult SaveBeans(List <Curd> rec, bool transaction = false, ReResult rex = null)
        {
            rex = rex ?? new ReResult();
            var list = new List <Record>();
            var con  = Connection();

            if (con.code != 200)
            {
                return(rex.setCode(con.code, con.msg));
            }
            MySqlTransaction trans = null;

            if (transaction)
            {
                trans = conn.BeginTransaction();
            }
            try
            {
                var sqls = new List <string>();
                rec.ForEach(x =>
                {
                    if (x.op == Operation.Insert && !x.list.IsBlank())
                    {
                        sqls.AddRange(x.getSqlList());
                    }
                    else
                    {
                        var ss = x.getSql();
                        if (!ss.IsBlank())
                        {
                            sqls.Add(ss);
                        }
                    }
                });

                foreach (var sql in sqls)
                {
                    if (sql.IsBlank())
                    {
                        if (transaction && trans != null)
                        {
                            trans.Rollback();
                        }
                        list.Add(new Record("success", "false").Put("message", "sql语句错误"));
                        return(rex.setCode(400, "sql语句错误").setData(list));
                    }
                    MySqlCommand cmd = new MySqlCommand(sql, conn);
                    //执行ExecuteReader()返回一个MySqlDataReader对象
                    var i = cmd.ExecuteNonQuery();
                    if (i > 0)
                    {
                        list.Add(new Record("Success", "true").Put("Message", "").Put("Sql", sql));
                        continue;
                    }
                    if (transaction && trans != null)
                    {
                        trans.Rollback();
                    }
                    list.Add(new Record("Success", "false").Put("Message", "保存操作失败").Put("Sql", sql));
                    return(rex.setCode(400, "操作失败").setData(list));
                }
                if (transaction && trans != null)
                {
                    trans.Commit();
                }
                return(rex.setData(list));
            }
            catch (Exception ex)
            {
                if (transaction && trans != null)
                {
                    trans.Rollback();
                }
                return(rex.setCode(500, ex.Message).setData(list));
            }
            finally
            {
                Close();
            }
        }