我从 HERE 找到了一个查询关于如何备份数据库,但它不工作,并抛出错误。请任何帮助。时间差
代码:
using MySql.Data.MySqlClient;
public bool BackupDatabase(string filename = "")
{
bool _isExecuted = false;
if (filename == "")
{
filename = string.Format("{0}/db_{1:MMddyyyyHHmmss}.sql", Environment.GetFolderPath(Environment.SpecialFolder.Desktop), DateTime.Now);
}
string _queryBackup = string.Format("mysqldump -u '{0}' -p '{1}' '{2}' > '{3}'", DatabaseUsername, DatabasePassword, DatabaseName, filename);
using (MySqlConnection con = new MySqlConnection(ConnectionString))
{
try
{
con.Open();
MySqlCommand cmd = new MySqlCommand(_queryBackup, con);
cmd.ExecuteNonQuery();
_isExecuted = true;
}
catch (Exception ex)
{
string _x = ex.Message;
}
}
return _isExecuted;
}
错误:
_x 包含此错误
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqldump -u 'root' -p 'usbw' 'my_database_name' > 'C:\Users\DesktopName\Desktop\db_08242012164022.sql' at line 1"
最佳答案
你的 _queryBackup 不是一个 sql 查询字符串,而是一个从系统运行的字符串,就像你从 cmd 控制台运行它一样。
下面是一些代码,用于从 C# 运行命令,例如您的命令
var startInfo = new ProcessStartInfo(command, parameterstring);
startInfo.RedirectStandardError = true;
startInfo.CreateNoWindow = true;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
startInfo.ErrorDialog = false;
Process process = Process.Start(startInfo);
StreamReader stdoutSR = process.StandardOutput;
string stdout = stdoutSR.ReadToEnd();
StreamReader stderrSR = process.StandardError;
string stderr = stderrSR.ReadToEnd();
关于c# - C# MySQL 备份数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12105898/