public void GetTotalRows(MySqlCommand cmd, GetTotalRowsMethod enumGetTotalRowsMode) { if (enumGetTotalRowsMode == GetTotalRowsMethod.InformationSchema) { DataTable dtTotalRows = QueryExpress.GetTable(cmd, string.Format("SELECT TABLE_NAME, TABLE_ROWS FROM `information_schema`.`tables` WHERE `table_schema` = '{0}';", _name)); int _tableCountTotalRow = 0; foreach (DataRow dr in dtTotalRows.Rows) { string _tbname = dr["TABLE_NAME"] + ""; long _totalRowsThisTable = 0L; long.TryParse(dr["TABLE_ROWS"] + "", out _totalRowsThisTable); if (_listTable.Contains(_tbname)) { _listTable[_tbname].SetTotalRows(_totalRowsThisTable); } } } else if (enumGetTotalRowsMode == GetTotalRowsMethod.SelectCount) { for (int i = 0; i < _listTable.Count; i++) { _listTable[i].GetTotalRowsByCounting(cmd); if (GetTotalRowsProgressChanged != null) { GetTotalRowsProgressChanged(this, new GetTotalRowsArgs(_listTable.Count, i + 1)); } } } }
public void GetTotalRows(MySqlCommand cmd, GetTotalRowsMethod enumGetTotalRowsMode) { int i = 0; var timer = new Timer { Interval = 10000 }; timer.Elapsed += (sender, e) => { GetTotalRowsProgressChanged?.Invoke(this, new GetTotalRowsArgs(_listTable.Count, i)); }; if (enumGetTotalRowsMode == GetTotalRowsMethod.InformationSchema) { DataTable dtTotalRows = QueryExpress.GetTable(cmd, string.Format("SELECT TABLE_NAME, TABLE_ROWS FROM `information_schema`.`tables` WHERE `table_schema` = '{0}';", _name)); timer.Start(); foreach (DataRow dr in dtTotalRows.Rows) { i++; var _tbname = dr["TABLE_NAME"] + ""; long.TryParse(dr["TABLE_ROWS"] + "", out var _totalRowsThisTable); if (_listTable.Contains(_tbname)) { _listTable[_tbname].SetTotalRows((long)(_totalRowsThisTable * 1.1)); // Adiciona 10% de erro } } timer.Stop(); GetTotalRowsProgressChanged?.Invoke(this, new GetTotalRowsArgs(_listTable.Count, _listTable.Count)); } else if (enumGetTotalRowsMode == GetTotalRowsMethod.SelectCount) { timer.Start(); foreach (var table in _listTable) { i++; table.GetTotalRowsByCounting(cmd); } timer.Stop(); GetTotalRowsProgressChanged?.Invoke(this, new GetTotalRowsArgs(_listTable.Count, _listTable.Count)); } }