/// <summary>
        /// 新增优惠券
        /// </summary>
        /// <param name="maxProductID"></param>
        private static void Add(int maxID, ISqlBLL iBLL, IMySqlBLL iMysqlBLL, string tbName)
        {
            int       errorCount = 0;
            DataTable dTable     = null;
            int       errorSum   = 0;
            int       sucessSum  = 0;

            while (true)
            {
                //  查询新数据
                dTable = iBLL.GetAddList(maxID, Program.UpdateTime, Program.UpdateMaxCount, tbName);
                if (dTable == null || dTable.Rows.Count <= 0)
                {
                    break;
                }
                //  保存
                if (!iMysqlBLL.Add(dTable, out errorCount))
                {
                    errorSum += errorCount;
                    Console.WriteLine(string.Format("{0} 表总共需添加 {1} 条数据,失败:{2}", tbName, dTable.Rows.Count, errorCount));
                }
                else
                {
                    sucessSum += dTable.Rows.Count;
                    Console.WriteLine(string.Format("{0} 表已添加 {1} 条数据", tbName, sucessSum));
                }
                maxID = Convert.ToInt32(dTable.Rows[dTable.Rows.Count - 1][GetTbIDStrByTbName(tbName)]);
            }
        }
        /// <summary>
        /// 订单相关表数据更新
        /// </summary>
        /// <param name="maxID">最大ID</param>
        /// <param name="iBLL"></param>
        /// <param name="iMysqlBLL"></param>
        /// <param name="tbName"></param>
        /// <param name="flag">更新3个月之前数据还是最近3个月的数据,3个月之前 - true,最近3个月 - false</param>
        private static void AddOrders(int maxID, ISqlBLL iBLL, IMySqlBLL iMysqlBLL, string tbNameAll, string tbName, bool flag)
        {
            int       errorCount = 0;
            DataTable dTable     = null;
            int       errorSum   = 0;
            int       sucessSum  = 0;
            string    msg        = string.Empty;
            string    msgError   = string.Empty;

            if (flag)
            {
                msg      = "{0}表往相应的历史库已添加 {1} 条数据";
                msgError = "{0} 表往相应的历史库总共需添加 {1} 条数据,失败数:{2}";
            }
            else
            {
                msg      = "{0}表往相应的库已添加 {1} 条数据";
                msgError = "{0} 表往相应的库总共需添加 {1} 条数据,失败数:{2}";
            }
            while (true)
            {
                //  查询新数据
                dTable = iBLL.GetAddList(maxID, Program.UpdateTime, Program.UpdateMaxCount, tbNameAll);
                if (dTable == null || dTable.Rows.Count <= 0)
                {
                    break;
                }
                //  保存
                if (!iMysqlBLL.Add(dTable, out errorCount))
                {
                    errorSum += errorCount;
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(string.Format(msgError, tbName, dTable.Rows.Count, errorCount));
                }
                else
                {
                    sucessSum += dTable.Rows.Count;
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine(string.Format(msg, tbName, sucessSum));
                }
                maxID = Convert.ToInt32(dTable.Rows[dTable.Rows.Count - 1][GetTbIDStrByTbName(tbName)]);
            }
        }
        /// <summary>
        /// 订单相关表数据更新
        /// </summary>
        /// <param name="iBLL"></param>
        /// <param name="iMysqlBLL"></param>
        /// <param name="tbName"></param>
        private static void MySqlUpdateOrders(ISqlBLL iBLL, IMySqlBLL iMysqlBLL, string tbName)
        {
            string tableName = string.Empty;
            string msgInfo   = string.Empty;

            try
            {
                tableName = tbName.Split('-')[0];
                string msg  = tbName.Split('-')[1];
                bool   flag = true;
                if (msg == "before")
                {
                    msgInfo = "3个月前数据更新";
                    flag    = true;
                }
                else
                {
                    msgInfo = "3个月后数据更新";
                    flag    = false;
                }
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine(string.Format("========== {0}:{1} BEGIN ==========", tableName, msgInfo));
                int maxID = 0;
                //  批量添加
                AddOrders(maxID, iBLL, iMysqlBLL, tbName, tableName, flag);
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(string.Format("{0}:{1} 失败:{2}", tableName, msgInfo, ex.Message));
            }
            finally
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine(string.Format("========== {0}:{1} END ==========", tableName, msgInfo));
            }
            //  通知主线程MySql数据库更新结束
            OnNotifyMainThreadCompleted(++completeCount);
        }
 /// <summary>
 /// 更新mysql 优惠券相关表的公共方法
 /// </summary>
 /// <typeparam name="T">表的实体</typeparam>
 /// <param name="iBLL">sql server数据库相关接口</param>
 /// <param name="iMysqlBLL">my server数据库相关接口</param>
 /// <param name="msg">不同表提示信息</param>
 private static void MySqlUpdate(ISqlBLL iBLL, IMySqlBLL iMysqlBLL, string tbName)
 {
     try
     {
         Console.ForegroundColor = ConsoleColor.White;
         Console.WriteLine(string.Format("========== {0} BEGIN ==========", tbName));
         //  Mysql 商品相关表的最大ID
         int maxID = 0; //iMysqlBLL.GetMaxID();
         //  批量添加
         Add(maxID, iBLL, iMysqlBLL, tbName);
     }
     catch (Exception ex)
     {
         Console.ForegroundColor = ConsoleColor.Red;
         Console.WriteLine(string.Format("{0} 更新失败:{1}", tbName, ex.Message));
     }
     finally
     {
         Console.ForegroundColor = ConsoleColor.White;
         Console.WriteLine(string.Format("========== {0} END ==========", tbName));
     }
     //  通知主线程MySql数据库更新结束
     OnNotifyMainThreadCompleted(++completeCount);
 }