private void button13_Click(object sender, EventArgs e) { if (MessageBox.Show("Estas seguro de abrir un archivo de respaldo? se remplazara toda la información en el sistema con lo que existe en el archivo de respaldo", "Confirm delete", MessageBoxButtons.YesNo) == DialogResult.Yes) { //se abre la ventana para seleccionar acrhivo OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.InitialDirectory = "c:\\"; openFileDialog1.Filter = "Archivos de sql (*.sql)|*.sql"; openFileDialog1.FilterIndex = 1; openFileDialog1.RestoreDirectory = true; if (openFileDialog1.ShowDialog() == DialogResult.OK) { try { //se abre el respaldo try { string constr = "server=localhost;User Id=root;Persist Security Info=True;database=gym"; string file = openFileDialog1.FileName; MySqlBackup mb = new MySqlBackup(constr); mb.ImportInfo.FileName = file; mb.ImportInfo.SetTargetDatabase("gym", ImportInformations.CharSet.utf8); mb.Import(); }catch(Exception ex){ MessageBox.Show("Ocurrio un error "+ex.Message); } } catch (Exception ex) { MessageBox.Show("Error del Sistema: " + ex.Message); } } MessageBox.Show("Información restaurada con exito"); //se cierran formularios cerrarFormuarios(); //se cierra sesion if (Utilidades.clsUsuario.salir()) { sinSesion(); } else { MessageBox.Show(Utilidades.clsUsuario.error); } } }
public static async Task Restore(this MySqlDatabase db, string inputFile, IProgress<int> progress, CancellationToken token) { await db.ExecuteScript("SET GLOBAL max_allowed_packet = 1024*1024*1024;"); await Task.Run(() => { using (var backup = new MySqlBackup(db.ConnectionString)) { var tcs = new TaskCompletionSource<bool>(); backup.ImportInfo.FileName = inputFile; backup.ImportInfo.AsynchronousMode = true; backup.ImportInfo.AutoCloseConnection = true; backup.ImportInfo.IgnoreSqlError = true; backup.Import(); backup.ImportProgressChanged += (sender, e) => progress.Report(e.PercentageCompleted); backup.ImportCompleted += (sender, e) => tcs.SetResult(true); tcs.Task.Wait(); } }); }