c# - C# MySQL 备份数据库

标签 c# mysql

我从 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/

相关文章:

C# 通过注册表获取 Windows 驱动器硬件标题

c# - serializer.Deserialize<T>() 上的字符串实习生

c# - MS在c#/.net中将MDB Access 到Sqlite

mysql - 计算日期范围内每个工作日的工作时间

php - 为什么会出现这些 MySQL 错误?

MySql 对多列进行排序考虑多个

c# - 使用 Razor 或标签生成器在 Html Helper 中构建 Html?

c# - 等待异步 TaskEx

php - 如何在 PHP 中计算每个月附有日期的项目?

mysql - 如何从 MySQL 中选择按创建日期和名称排序的标签,但删除重复的名称?