C# Backup Mysql: effettuare il backup di tabelle e salvare tutto in un file

Standard

In questo articolo vedremo come effettuare il backup del database mysql in C#, naturalmente per il nostro progetto useremo il .NET Connector, inutile utilizzare l’ODBC connector in questa maniera si ottiene una connessione natia senza dover installare alcun programma esterno.

Ecco quì il codice sorgente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
MySqlConnection _connection = new MySqlConnection();
DateTime adesso = DateTime.Now;
string adessoSTR = adesso.ToString("yyyy_MM_dd_(HH_mm_ss)");
_connection.ConnectionString = Properties.Settings.Default.@"Nome stringa di connessione";
try
{
_connection.Open();
_connection.Close();
}
catch (Exception err)
{
MessageBox.Show(err.Message);
return;
}
string dir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).ToString() + @"\@"Nome Applicazione"\BackupDB";
if (!System.IO.Directory.Exists(dir))
System.IO.Directory.CreateDirectory(dir);
String stringa = global::@"Nome Progetto".Properties.Settings.Default.@"Nome stringa di connessione";
if (stringa[stringa.Length - 1] != ';')
stringa += ";";
string args = valore(stringa, "database") + " -h " + valore(stringa, "server") + " -P " + "3306" + " -u " + valore(stringa, "user id") + " --comments=false --opt --password=" + valore(stringa, "Password") + " -r "" + dir + nomeFileSenzaEstenzione + ".sql" + """;
Process p = new Process();
p.StartInfo.FileName = Application.StartupPath + @"\utility\mysqldump.exe";
p.StartInfo.Arguments = args;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
while (!p.HasExited);

Naturalmente per funzionare il codice ha bisogno di alcune modifiche, basta sostituire:

  • @”Nome stringa di connessione” : nome della stringa di connessione utilizzata nel progetto
  • @”Nome Applicazione” : nome dell’applicazione
  • @”Nome Progetto” : nome del progetto (spazio dei nomi predefinito)

Inoltre per effettuare il Backup ci serve la famosa utility mysqldump presente in tutte le distribuzioni di mysql, basta includerla nel progetto nella cartella “utility”, il percorso naturalmente può essere cambiato a piacimento nel codice precedente.

Detto fatto, nella cartella dati applicazioni troveremo una cartella con il nome dell’applicazione, al suo interno nella cartella BackupDB saranno salvati tutti i backup. Prossimamente perfezioneremo questo codice aggiungendo altre funzionalità (come la possibilità di salvare con files zippati protetti con password).