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数据库。