【问题标题】:MySQL Backup Database in C#C# 中的 MySQL 备份数据库
【发布时间】:2012-08-24 08:41:42
【问题描述】:

我从HERE 发现了一个关于如何备份数据库的查询,但它不工作并且引发错误。请提供任何帮助。 TIA

代码:

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 包含此错误

“您的 SQL 语法有错误;请查看手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 'mysqldump -u 'root' -p 'usbw' 'my_database_name' 附近 > 'C:\Users\DesktopName\Desktop\db_08242012164022.sql' 在第 1 行"

【问题讨论】:

标签: c# mysql


【解决方案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();

【讨论】:

  • ahhh.. 那么,是否有任何 sql 查询字符串来备份数据库?那么给定的方法是否适用?
猜你喜欢
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多