Example #1
0
        public static void FullSync(ResultEventHandler <bool> resultEventHandler = null)
        {
            if (_db.SyncIsActive)
            {
#if DEBUG
                DConsole.WriteLine($"---------------{Environment.NewLine}Синхронизация не запущена," +
                                   $" происходит другая синхронизация." +
                                   $"{Environment.NewLine}Class {nameof(DBHelper)} method {nameof(FullSync)}" +
                                   $"{Environment.NewLine}---------------");
#endif
                return;
            }

#if DEBUG
            DConsole.WriteLine($"---------------{Environment.NewLine}Начинаю полную синхронизацию." +
                               $"{Environment.NewLine}Class {nameof(DBHelper)} method {nameof(FullSync)}" +
                               $"{Environment.NewLine}---------------");
#endif

            try
            {
                _db.PerformFullSync(Settings.Server, Settings.User, Settings.Password, Settings.DefaultSyncTimeOut,
                                    SyncHandler + resultEventHandler,
                                    "Full");
            }
            catch (Exception)
            {
                SyncHandler("Full", new ResultEventArgs <bool>(false));
            }
        }
Example #2
0
        public static void FullSyncAsync(ResultEventHandler <bool> resultEventHandler = null, ResultEventHandler <Database.ProgressArgs> progressCallback = null)
        {
            if (_db.SyncIsActive)
            {
#if DEBUG
                DConsole.WriteLine($"---------------{Environment.NewLine}Синхронизация не запущена," +
                                   $" происходит другая синхронизация." +
                                   $"{Environment.NewLine}Class {nameof(DBHelper)} method {nameof(FullSyncAsync)}" +
                                   $"{Environment.NewLine}---------------");
#endif
                return;
            }

#if DEBUG
            DConsole.WriteLine($"---------------{Environment.NewLine}Начинаю полную синхронизацию." +
                               $"{Environment.NewLine}Class {nameof(DBHelper)} method {nameof(FullSyncAsync)}" +
                               $"{Environment.NewLine}---------------");
#endif

            try
            {
                Utils.TraceMessage($"Sync(from Settings) login: {Settings.User} password: {Settings.Password}");
                _db.PerformFullSyncAsync(Settings.Server, Settings.User, Settings.Password, Settings.DefaultSyncTimeOut,
                                         SyncHandler + resultEventHandler,
                                         "Full", progressCallback);
                if (resultEventHandler == null)
                {
                    isPartialSyncRequired = false;
                }
            }
            catch (Exception)
            {
                SyncHandler("Full", new ResultEventArgs <bool>(false));
            }
        }
Example #3
0
        public static void UploadAsync(ResultEventHandler <bool> resultEventHandler = null)
        {
            if (_db.SyncIsActive)
            {
                Utils.TraceMessage($"---------------{Environment.NewLine}Синхронизация не запущена," +
                                   $" происходит другая синхронизация." +
                                   $"{Environment.NewLine}Class {nameof(DBHelper)} method {nameof(UploadAsync)}" +
                                   $"{Environment.NewLine}---------------");

                return;
            }
            Utils.TraceMessage($"---------------{Environment.NewLine}Сохранение данных в базу," +
                               $"{Environment.NewLine}Class {nameof(DBHelper)} method {nameof(UploadAsync)}" +
                               $"{Environment.NewLine}---------------");
            Utils.TraceMessage($"---------------{Environment.NewLine}Полная синхронизация не требуется," +
                               $" сущности будут сохранены асинхронно." +
                               $"{Environment.NewLine}Class {nameof(DBHelper)} method {nameof(UploadAsync)}" +
                               $"{Environment.NewLine}---------------");
            try
            {
                _db.UploadChangesAsync(Settings.Server, Settings.User, Settings.Password, Settings.DefaultSyncTimeOut,
                                       SyncHandler + resultEventHandler,
                                       "Partial");
            }
            catch (Exception)
            {
                SyncHandler("Partial", new ResultEventArgs <bool>(false));
            }
        }
Example #4
0
        /// <summary>
        /// 得到数据库中所有记录可以展示的页数
        /// </summary>
        public void  GetPageNum()
        {
            SQLEventHandler    pageNumSQLHandler    = new SQLEventHandler(PageNumSQLHandler);
            ResultEventHandler pageNumResultHandler = new ResultEventHandler(PageNumResultHandler);

            SQLExectueReader(pageNumSQLHandler, pageNumResultHandler);
        }
Example #5
0
        /// <summary>
        /// 加载对应页的数据信息
        /// </summary>
        public void Init()
        {
            SQLEventHandler    initSQLHandler    = new SQLEventHandler(InitSQLHandle);
            ResultEventHandler initResultHandler = new ResultEventHandler(InitResultHandler);

            SQLExectueReader(initSQLHandler, initResultHandler);
        }
Example #6
0
        /// <summary>
        /// 执行对应的数据库操作,并对返回集进处理
        /// </summary>
        /// <param name="sqlHandle">一个定义具体的数据库操作的委托类型</param>
        /// <param name="resultHandle">一个对返回集进行处理的委托类型</param>
        protected void SQLExectueReader(SQLEventHandler sqlHandle, ResultEventHandler resultHandle)
        {
            /**
             * 使用了委托的方式,可以使得该方法可以处理不同的数据库操作,使得程序代码变得更加简洁
             *
             * SQLEventHandler :一个定义具体的数据库操作的委托类型
             * ResultEventHandler  :一个定义对返回集进行处理的委托类型
             *
             * 当相对数据库进行操作,并要返回一个 MySqlDataResult 类型的结果集时,
             * 你可以在你的方法中调用该方法(前提是你的类必须集成自该类),然后你
             * 可以将数据库的操作与对结果集的处理作为新的方法去定义,然后使用委托
             * 将具体的操作传入该方法之中,已完成对数据库的操作
             */
            try
            {
                MySqlConnection conn = DbPool.Instance.GetConnectionFromPool();
                if (conn.State == System.Data.ConnectionState.Closed)
                {
                    conn.Open();
                }
                MySqlCommand command = conn.CreateCommand();
                sqlHandle(command);

                MySqlDataReader re = command.ExecuteReader();
                resultHandle(re);

                command.Dispose();
                re.Close();
                re.Dispose();

                DbPool.Instance.ReturnObjectToPool(conn);
            }
            catch (Exception e)
            {
            }
        }
Example #7
0
 public void OnEventCall(EventArgs args)
 {
     ResultEventHandler?.Invoke(this, args);
 }