备份mysql 搞了半天 终于成功了
private string connString ="";
Dictionary<string, string> _dic;
public Mysqlbackups()
{
InitializeComponent();
}
#region MyRegion
/// <summary>
/// 备份数据库
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Backup_Click(object sender, RoutedEventArgs e)
{
try
{
//构建执行的命令
StringBuilder sbcommand = new StringBuilder();
ReadFromText();
string host = gethost();
string port = _dic["port"];
string user = _dic["User Id"];
string password = _dic["Password"];
string database = _dic["Database"];
string fileName = database + "_bak_" + DateTime.Now.ToString("yyyyMMddhhmmss");
string bakPath = "D:\\" + fileName + ".sql"; //System.IO.Path.GetDirectoryName("Database") 默认
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "SQL (*.sql)|*.sql"; ;
saveFileDialog.AddExtension = false;
saveFileDialog.CheckFileExists = false;
saveFileDialog.CheckPathExists = false;
saveFileDialog.FileName = bakPath;
if ((bool)(saveFileDialog.ShowDialog()))
{
String directory = saveFileDialog.FileName;
sbcommand.AppendFormat("mysqldump -quick --default-character-set=utf8 -h{0} -P{1} -u{2} -p{3} {4} > {5}", host, port, user, password, database, directory);
String command = sbcommand.ToString();
//获取mysqldump.exe所在路径
var registerLocation = @"Software\MySQL AB\MySQL Server 5.5";
var key = Registry.LocalMachine.OpenSubKey(registerLocation);
var location = "";
if (key != null)
{
location = key.GetValue("Location").ToString();
}
StartCmd(location+@"bin", command);
Stools.MyLognet.WriteInfo("数据库已成功备份到 " + directory + " 文件中"+DateTime.Now.ToString());
MessageBox.Show(@"数据库已成功备份到 " + directory + " 文件中", "提示",MessageBoxButton.OK,MessageBoxImage.Information);
}
}
catch
{
Stools.MyLognet.WriteError("数据库备份失败 " + DateTime.Now.ToString());
MessageBox.Show("数据库备份失败!");
}
// DoBackup();
}
public void StartCmd(String workingDirectory, String command)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = workingDirectory;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine(command);
p.StandardInput.WriteLine("exit");
}
public string gethost()
{
string host = "";
try
{
if (!string.IsNullOrEmpty(_dic["server"]))
{
host = _dic["server"].ToString();
}
}
catch (Exception)
{
host = _dic["Data Source"].ToString();
}
return host;
}
/// <summary>
/// 读配置
/// </summary>
/// <returns></returns>
public void ReadFromText()
{
_dic = new Dictionary<string, string>();
// connectionStrings
try
{
connString = ConfigurationManager.ConnectionStrings["connStr"].ToString();
}
catch (Exception)
{
}
string[] sp = connString.Split(';');
foreach (string item in sp)
{
if (item != "")
{
_dic.Add(item.Split('=')[0], item.Split('=')[1]);
}
}
}
}
#endregion

浙公网安备 33010602011771号