Mysql教程

21.3 C#备份与还原MySQL数据库

C#语言中可以执行mysqldump命令来备份MySQL数据库,也可以执行mysql命令来还原MySQL数据库。本节将为读者介绍C#备份与还原MySQL数据库的方法。

21.3.1  C#备份MySQL数据库

C#中的Process类的Strat()方法可以调用外部命令。因此,C#中可以通过调用mysqldump命令来备份MySQL数据库。mysqldump命令通常需要在DOS窗口中执行,所以需要使用Start()方法调用cmd命令来打开DOS窗口。Process类的命名空间为System.Diagnostics,因此需要使用此^^语句来引用这个命名空间。语句如下:

using System .Diagnostics;

Srart()方法有多种重载的方法。其中一种方法是Start(ProcessStartInfo),这说明Start()方法可以使用ProcessStartInfo对象作为参数。ProcessStartInfo对象指定了启动进程的资源。 ProcessStartInfo有几个重要的参数需要设置。这些参数介绍如下:

  • FileName:设置需要启动的程序

  • Arguments:设置程序需要的参数

说明:除了这两个参数以外,ProcessStartInfo还有很多参数。例如,RedirectStandardOutput表示是否将应用程序的输出写入到Process.StandardOutput流中。这些参数都有默认值,但读者也可以根据自己的需要进行设置。感兴趣的读者可以参考C#的官方文档。这里需要启动的程序是cmd.exe,启动这个程序打开DOS窗口。将mysqldump命令作为cmd.exe程序的参数,打开DOS窗口后就会执行mysqldump命令。使用Start()方法语句 如下:

ProcessStartInfo psi = new ProcessStartlnfo();
psi.FileName = "cmd.exe";
psi.Arguments = "/c mysqldump -h hostname -u user -pPassword database [table] > dir/BackupName.sql";
Process.Start(psi);

其中,/c表示执行完命令后关闭命令窗口;dir表示sql文件的备份路径。

【示例21-12】下面将test数据库备份到C:\目录下的test.sql文件中。其部分代码如下:

ProcessStartInfo psi = new ProcessStartlnfo();	//创建 ProcessStartInfo 对象
psi.FileName = "cmd.exe";	//指定启动 cmd.exe 文件
//指定启动文件的参数,将mysqldump命令作为cmd程序的参数
psi.Arguments = "/c mysqldump -h localhost -u root -phuang test > C:/test.sql";
//执行cmd.exe文件打开DOS窗口,在DOS窗口中执行mysqldump命令
Process.Start(psi);

代码执行完后,可以在C:\目录下找到test.sql文件。

Start()方法也可以直接使用两个字符串作为参数。第一个字符串是需要启动的程序, 与FileName的值对应;第二个字符串是程序需要的参数,与Arguments值对应。因此, 备份语句写成下面的形式:

Process.Start("cmd.exe", "/c mysqldump 语句");

【示例21-13】下面将test数据库备份到C:\目录下的test.sql文件中。其部分代码如下:

//将cmd.exe和mysqldump命令作为Start()函数的参数,执行cmd.exe文件打开DOS窗口
//然后在打开的DOS窗口中执行mysqldump命令
Process.Start("cmd.exe","/c mysqldump -h localhost -u root -phuang test > C:/test.sql");

这段代码也可以将test数据库备份到C:\目录下。

23.2  C#还原MySQL数据库

C#使用Process类的Start()方法调用cmd.exe程序,通过cmd.exe程序打开DOS窗口。 然后在DOS窗口中执行mysql命令来还原MySQL数据库。还原MySQL数据库的语句 如下:

ProcessStartlnfo psi = new ProcessStartlnfo();
psi.FileName = "cmd.exe";
psi.Arguments = "/c mysql -h hostname -u user -pPassword database [table] < dir/BackupName.sql";
Process.Start(psi);

还原MySQL数据库时使用的方法与备份时基本一样,只是将mysqldump命令换成了mysql命令。同样,还原MySQL数据库时也可以使用下面的语句:

Process.Start("cmd.exe", "/c mysqldump 语句");

【示例21-14】下面将C:\目录下的text.sql文件还原到test数据库中。其部分代码如下:

ProcessStartlnfo psi = new ProcessStartlnfo();	//创建 ProcessStartlnfo 对象
psi.FileName = "cmd.exe";	//指定启动 cmd.exe 文件
//指定启动文件的参数,将mysql命令作为cmd程序的参数
psi.Arguments = "/c mysql -h localhost -u root -phuang test < C:/test.sql";
//执行cmd.exe文件打开DOS窗口,在DOS窗口中执行mysql命令
Process.Start(psi);

代码执行完后,可以查询test数据库。

关注微信获取最新动态