我创建了Winforms以备份我的数据库。然后,当我运行我的程序时,它给出了一个未处理的Win32Exception。 “系统找不到指定的文件”虽然该文件已经存在并导致该异常。
这是关于我的问题的代码
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();
}
答案 0 :(得分:21)
您可以使用 MySqlBackup.NET 替代 MySqlDump
文档:
http://www.codeproject.com/Articles/256466/MySqlBackup-NET-MySQL-Backup-Solution-for-Csharp-V
https://github.com/MySqlBackupNET/MySqlBackup.Net
示例代码:
备份MySQL数据库
using MySql.Data.MySqlClient;
然后是代码,
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();
}
}
}
}
恢复MySQL数据库
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();
}
}
}
}
<强>更新强>
我是这个图书馆的作者之一。
答案 1 :(得分:1)
我已尝试该代码,但在运行之前出现问题。 exeption是 - 一个未处理的类型&#39; System.IO.FileLoadException&#39;发生在System.Windows.Forms.dll
中其他信息:无法加载文件或程序集&#39; MySql.Data,Version = 6.5.4.0,Culture = neutral,PublicKeyToken = c5687fc88969c44d&#39;或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
答案 2 :(得分:0)
我相信你必须提到用户,密码,数据库名称和目标路径..
string path = @"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe -u " + txtBoxDBUsername.Text + @" -p " + txtBoxDBName.Text + @" > " + txtBoxDBName.Text + @".sql";
备份:#mysqldump -u root -p [root_password] [database_name]&gt; dumpfilename.sql
恢复:#mysql -u root -p [root_password] [database_name]&lt; dumpfilename.sql
http://www.thegeekstuff.com/2008/09/backup-and-restore-mysql-database-using-mysqldump/
答案 3 :(得分:0)
你可以试试这个。
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();
try
{
mb.ExportToFile(file);
}
catch(MySqlException ex)
{
msgErr(ex.Message + " sql query error.");
return;
}
}
catch(MySqlException ex)
{
msgErr(ex.Message + " connection error.");
return;
}
}
}
}
}
答案 4 :(得分:0)
MONTH_ID
的最后存在完全没用,它不会插入任何引号。更正引号的代码的正确版本是:
ORG_UNIT_ID
为了更好的可读性:
+ @""
答案 5 :(得分:0)
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}<{4}", "root", "password", "localhost", "your_dbname", "your_.sql_file");
psi.UseShellExecute = false;
Process process = Process.Start(psi);
process.StandardInput.WriteLine(input);
process.StandardInput.Close();
process.WaitForExit();
process.Close();
这个对我有用,只要您备份了.sql文件,就可以试用它