private void menuToolsDatabaseCleanup_Click(object sender, EventArgs e) { FormDatabaseCleanup frmDatabaseCleanup = new FormDatabaseCleanup(); if (frmDatabaseCleanup.ShowDialog(this) == DialogResult.OK) { CleanupDatabase(frmDatabaseCleanup.UnitCount, frmDatabaseCleanup.TimeUnit); LoadEventsFromDatabase(); } }
private void CleanupDatabase(int unitCount, FormDatabaseCleanup.TimeUnitType unitType) { DateTime maxDateTime = DateTime.Now; switch (unitType) { case FormDatabaseCleanup.TimeUnitType.Year: maxDateTime = maxDateTime.AddYears(-unitCount); break; case FormDatabaseCleanup.TimeUnitType.Month: maxDateTime = maxDateTime.AddMonths(-unitCount); break; case FormDatabaseCleanup.TimeUnitType.Day: maxDateTime = maxDateTime.AddDays(-unitCount); break; case FormDatabaseCleanup.TimeUnitType.Hour: maxDateTime = maxDateTime.AddHours(-unitCount); break; case FormDatabaseCleanup.TimeUnitType.Minute: maxDateTime = maxDateTime.AddMinutes(-unitCount); break; case FormDatabaseCleanup.TimeUnitType.Second: maxDateTime = maxDateTime.AddSeconds(-unitCount); break; default: throw new ArgumentOutOfRangeException("unitType"); } const string dbCleanupQuery = "delete from FileSystemEvent where FileSystemEventDate < @maxDateTime"; try { QueryParameterSet queryParameterSet = new QueryParameterSet(); queryParameterSet.Add("@maxDateTime", maxDateTime.ToString("yyyy-MM-dd HH:mm:ss")); DataProvider.Database.Query(dbCleanupQuery, queryParameterSet, false); } catch (Exception ex) { EventLogger.RecordException(Constants.AdminApplicationEventSource, ex, "Failed to clean up database: "); FormHelper.ShowErrorMessage("Failed to clean up database: " + ex.Message, "Error"); } }