Example #1
0
 /// <summary>
 ///  执行多条SQL语句,实现数据库事务。
 /// </summary>
 /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
 /// <returns>事务是否成功</returns>
 public static bool Tran(this TranCollection ltTran)
 {
     using (DBDalOperate dal = new DBDalOperate())
     {
         return(dal.ExecSqlTran(ltTran));
     }
 }
Example #2
0
        /// <summary>
        ///  执行多条SQL语句,实现数据库事务。
        /// </summary>
        /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
        /// <returns>事务是否成功</returns>
        public bool ExecSqlTran(TranCollection ltTran)
        {
            bool flag = true;

            base.ConnectionOpen();
            base.myCommand       = new SqlCommand();
            myCommand.Connection = base.myConnection;
            string CurrentSql = "";
            var    curList    = ltTran.OrderBy(ss => ss.Order).ToList();

            using (SqlTransaction trans = base.myConnection.BeginTransaction())
            {
                try
                {
                    //循环
                    foreach (var tran in curList)
                    {
                        CurrentSql = tran.Sql.ToString();
                        SqlParameter[] cmdParms = tran.Pars != null?tran.Pars.ToArray() : null;

                        PrepareCommand(base.myCommand, base.myConnection, trans, CurrentSql, cmdParms);
                        int val = myCommand.ExecuteNonQuery();
                        myCommand.Parameters.Clear();
                    }
                    trans.Commit();
                    return(flag);
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    using (LogMethod lM = new LogMethod())
                    {
                        lM.WriteLog(ex.Message + "SQL:" + CurrentSql, ex);
                    }
                    throw ex;
                }
                finally
                {
                    base.CommandClose();
                    base.ConnectionClose();
                }
            }
        }