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)); } }
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)); } }
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)); } }
/// <summary> /// 得到数据库中所有记录可以展示的页数 /// </summary> public void GetPageNum() { SQLEventHandler pageNumSQLHandler = new SQLEventHandler(PageNumSQLHandler); ResultEventHandler pageNumResultHandler = new ResultEventHandler(PageNumResultHandler); SQLExectueReader(pageNumSQLHandler, pageNumResultHandler); }
/// <summary> /// 加载对应页的数据信息 /// </summary> public void Init() { SQLEventHandler initSQLHandler = new SQLEventHandler(InitSQLHandle); ResultEventHandler initResultHandler = new ResultEventHandler(InitResultHandler); SQLExectueReader(initSQLHandler, initResultHandler); }
/// <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) { } }
public void OnEventCall(EventArgs args) { ResultEventHandler?.Invoke(this, args); }