重剑无锋 大巧不工

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
这篇放到单独讲解数据库的分类比较好,不过作为技巧性的东西,不强求怎么分类,且听我徐徐道来.
 备份方法:
先通过注册表得到MySQL程序的安装路径,如果是5.0版本,就是:
 
var registerLocation = @"Software\MySQL AB\MySQL Server 5.0";
var key
= Registry.LocalMachine.OpenSubKey(registerLocation);
if (key != null)
{
var location
= key.GetValue("Location").ToString();
}
 
得到路径之后,新建一个Process,准备开始备份,具体细节一边代码一边注释讲解.
 
var proc = new Process();
//通过命令行的方式进行备份,因此需要运行cmd.exe
proc.StartInfo.FileName = "cmd.exe";
//禁用系统Shell启动
proc.StartInfo.UseShellExecute = false;
//设置工作目录到location + @"bin"
//因为我们要使用mysqldump做备份,而mysqldump程序在目录 location+@"bin"下
proc.StartInfo.WorkingDirectory = location + @"bin";
//mysqldump的参数可参考mysql官网的注解,这里通过format的方式
//得到的命令参数,每个代表什么意思,从字面上已经很好理解,不解释,^_^
proc.StartInfo.Arguments = string.Format("mysqldump.exe --default-character-set=utf8 -h {0} -u {1} -p{2} {3} > {4}",server,user,pwd,database,backupFile);
//不新建窗口,相当于隐藏界面
proc.StartInfo.CreateNoWindow = true;
//以下两句主要是为了调试目的,加不加都无所谓
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput
= true;
//开始执行备份
proc.Start();
//等待备份完成
proc.WaitForExit();
//关闭进程
proc.Close();
 这样简单几步就备份完成了.
还原方法:
跟备份的方法类似,只是备份调用的是mysql.exe
只需改一句,具体参数—force表示强制还原,其他很明了,不多解释.
 
proc.StartInfo.Arguments = string.Format("mysql.exe --force -h {0} -u {1} -p{2} {3} < {4}",
server,user,pwd,database,restoreFile);
多余的代码就不写了,O(∩_∩)O哈哈~
 
posted on 2011-03-21 11:18  bloodish  阅读(2615)  评论(3编辑  收藏  举报