Reputation: 309
I created a Winforms in order to backup my Database. Then When I run my program it gives an Win32Exception was unhandled. "The system cannot find the file specified" Although the file is already existed and resulted to that exception.
Here is my code regarding my problem
using System.Diagnostics;
private void btnProceed_Click(object sender, EventArgs e)
{
path = @"D:\MySQL\MySQL Server 5.5\bin\mysqldump.exe -u " + txtBoxDBUsername.Text + @" -p " + txtBoxDBName.Text + @" > D:\C#\Client\Salesmate - EMC\SalesMate\Backup\" + maskeTxtBoxDBFile.Text + @"";
Process p = new Process();
p.StartInfo.FileName = path;
p.Start();
}
Upvotes: 10
Views: 55041
Reputation: 2458
You may try this one.
public void BackUpData(string file)
{
using MySqlConnection con = new MySqlConnection { ConnectionString = config };
using MySqlCommand cmd = new MySqlCommand { Connection = con };
using MySqlBackup mb = new MySqlBackup { Command = cmd };
try
{
con.Open();
}
catch(MySqlException ex)
{
msgErr(ex.Message + " connection error.");
return;
}
try
{
mb.ExportToFile(file);
}
catch(MySqlException ex)
{
msgErr(ex.Message + " sql query error.");
}
}
Upvotes: 0
Reputation: 1
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = @"C:\xampp\mysql\bin\mysql.exe";
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = false;
psi.CreateNoWindow = true;
psi.Arguments = string.Format(@"-u{0} -p{1} -h{2} {3}", "root", "password", "localhost", "your_dbname");
psi.UseShellExecute = false;
Process process = Process.Start(psi);
process.StandardInput.Write(File.ReadAllText(inputFilePath));
process.StandardInput.Close();
process.WaitForExit();
process.Close();
This one worked for me you can try it out as long as you've your backed up .sql file
Upvotes: 0
Reputation: 7969
You can use MySqlBackup.NET as alternative to MySqlDump
Documentation:
http://www.codeproject.com/Articles/256466/MySqlBackup-NET-MySQL-Backup-Solution-for-Csharp-V
https://github.com/MySqlBackupNET/MySqlBackup.Net
Sample codes:
Backup a MySQL database
using MySql.Data.MySqlClient;
then the code,
private void Backup()
{
string constring = "server=localhost;user=root;pwd=qwerty;database=test;";
string file = "C:\\backup.sql";
using (MySqlConnection conn = new MySqlConnection(constring))
{
using (MySqlCommand cmd = new MySqlCommand())
{
using (MySqlBackup mb = new MySqlBackup(cmd))
{
cmd.Connection = conn;
conn.Open();
mb.ExportToFile(file);
conn.Close();
}
}
}
}
Restore a MySQL database
private void Restore()
{
string constring = "server=localhost;user=root;pwd=qwerty;database=test;";
string file = "C:\\backup.sql";
using (MySqlConnection conn = new MySqlConnection(constring))
{
using (MySqlCommand cmd = new MySqlCommand())
{
using (MySqlBackup mb = new MySqlBackup(cmd))
{
cmd.Connection = conn;
conn.Open();
mb.ImportFromFile(file);
conn.Close();
}
}
}
}
Update:
I am one of the author of this library.
Upvotes: 41
Reputation: 1050
+ @""
is completely useless, it doesn't insert any quotes.A correct version of your code with quotes corrected is:
path = @"""D:\MySQL\MySQL Server 5.5\bin\mysqldump.exe"" -u " + txtBoxDBUsername.Text + @" -p " + txtBoxDBName.Text + @" > ""D:\C#\Client\Salesmate - EMC\SalesMate\Backup\" + maskeTxtBoxDBFile.Text + @"""";
For more readability:
path = $@"""D:\MySQL\MySQL Server 5.5\bin\mysqldump.exe"" -u {txtBoxDBUsername.Text} -p {txtBoxDBName.Text} > ""D:\C#\Client\Salesmate - EMC\SalesMate\Backup{maskeTxtBoxDBFile.Text}""";
Upvotes: 0
Reputation: 1507
I believe you have to mention the user, pwd, db name and the target path..
string path = @"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe -u " + txtBoxDBUsername.Text + @" -p " + txtBoxDBName.Text + @" > " + txtBoxDBName.Text + @".sql";
backup: # mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql
restore:# mysql -u root -p[root_password] [database_name] < dumpfilename.sql
http://www.thegeekstuff.com/2008/09/backup-and-restore-mysql-database-using-mysqldump/
Upvotes: 0