博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#备份还原MySql数据库
阅读量:5983 次
发布时间:2019-06-20

本文共 4041 字,大约阅读时间需要 13 分钟。

原文:

      项目结束,粘点代码出来让Google或Baidu一下,原因是现在还搜不到这么现成的

      调用MySql的工具mysqldump来实现。

      类Cmd来实现调用cmd命令,

要启动的进程所在的目录是说mysql自动的备份还原数据库工具mysqldump和mysql所在目录,当然,这个方法可以执行别的命令行工具。

 

using
 System;
using
 System.Collections.Generic;
using
 System.Text;
using
 System.Diagnostics;
    
public
 
class
 Cmd
    {
        
///
 
<summary>
        
///
 执行Cmd命令
        
///
 
</summary>
        
///
 
<param name="workingDirectory">
要启动的进程的目录
</param>
        
///
 
<param name="command">
要执行的命令
</param>
        
public
 
static
 
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
"
);
        }
    }

 

备份方法:

using
 System;
using
 System.Collections.Generic;
using
 System.ComponentModel;
using
 System.Data;
using
 System.Drawing;
using
 System.Text;
using
 System.Windows.Forms;
using
 System.IO;
using
 System.Diagnostics;
using
 System.Configuration;
using
 MDRClient.DataAccess;
namespace
 MDRClient
{
    
public
 
partial
 
class
 DataBackup : Form
    {
        
public
 DataBackup()
        {
            InitializeComponent();
        }
        
private
 
void
 btnBackup_Click(
object
 sender, EventArgs e)
        {
            
try
            {
                
//
String command = "mysqldump --quick --host=localhost --default-character-set=gb2312 --lock-tables --verbose  --force --port=端口号 --user=用户名 --password=密码 数据库名 -r 备份到的地址";
                
//
构建执行的命令
                StringBuilder sbcommand 
=
 
new
 StringBuilder();
                StringBuilder sbfileName 
=
 
new
 StringBuilder();
                sbfileName.AppendFormat(
"
{0}
"
, DateTime.Now.ToString()).Replace(
"
-
"
""
).Replace(
"
:
"
""
).Replace(
"
 
"
""
);
                String fileName 
=
 sbfileName.ToString();
                SaveFileDialog saveFileDialog 
=
 
new
 SaveFileDialog();
                saveFileDialog.AddExtension 
=
 
false
;
                saveFileDialog.CheckFileExists 
=
 
false
;
                saveFileDialog.CheckPathExists 
=
 
false
;
                saveFileDialog.FileName 
=
 fileName;
                
if
 (saveFileDialog.ShowDialog() 
==
 DialogResult.OK)
                {
                    String directory 
=
 saveFileDialog.FileName;
                    sbcommand.AppendFormat(
"
mysqldump --quick --host=localhost --default-character-set=gbk --lock-tables --verbose  --force --port=端口号 --user=用户名 --password=密码 数据库名 -r \
"
{
0
}\
""
, directory);
                    String command 
=
 sbcommand.ToString();
                    
//
获取mysqldump.exe所在路径
                    String appDirecroty 
=
 System.Windows.Forms.Application.StartupPath 
+
 
"
\\
"
;
                    Cmd.StartCmd(appDirecroty, command);
                    MessageBox.Show(
@"
数据库已成功备份到 
"
 
+
 directory 
+
 
"
 文件中
"
"
提示
"
, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            
catch
 (Exception ex)
            {
                MessageBox.Show(
"
数据库备份失败!
"
);
                
            }
        }
        
    }
}

 

还原方法,调用的是mysql自带工具mysql,还原时要注意的是选择的文件所在路径时,文件名要是有空格的话会出

异常,所以在文件路径名加上双引号""

using
 System;
using
 System.Collections.Generic;
using
 System.ComponentModel;
using
 System.Data;
using
 System.Drawing;
using
 System.Text;
using
 System.Windows.Forms;
using
 System.IO;
using
 System.Diagnostics;
using
 System.Configuration;
using
 MDRClient.DataAccess;
namespace
 MDRClient
{
    
public
 
partial
 
class
 DataRestore : Form
    {
        
public
 DataRestore()
        {
            InitializeComponent();
        }
        
private
 
void
 btnRestore_Click(
object
 sender, EventArgs e)
        {
            
//
string s = "mysql --port=端口号 --user=用户名 --password=密码 数据库名<还原文件所在路径";
            
try
            {
                StringBuilder sbcommand 
=
 
new
 StringBuilder();
                OpenFileDialog openFileDialog 
=
 
new
 OpenFileDialog();
                
if
 (openFileDialog.ShowDialog() 
==
 DialogResult.OK)
                {
                    String directory 
=
 openFileDialog.FileName;
                    
//
在文件路径后面加上""避免空格出现异常
                    sbcommand.AppendFormat(
"
mysql --host=localhost --default-character-set=gbk --port=端口号 --user=用户名 --password=密码 数据库<\
"
{
0
}\
""
, directory);
                    String command 
=
 sbcommand.ToString();
                    
//
获取mysql.exe所在路径
                    String appDirecroty 
=
 System.Windows.Forms.Application.StartupPath 
+
 
"
\\
"
;
                    DialogResult result 
=
 MessageBox.Show(
"
您是否真的想覆盖以前的数据库吗?那么以前的数据库数据将丢失!!!
"
"
警告
"
, MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    
if
 (result 
==
 DialogResult.Yes)
                    {
                        Cmd.StartCmd(appDirecroty, command);
                        MessageBox.Show(
"
数据库还原成功!
"
);
                    }
                }
                
            }
            
catch
 (Exception ex)
            {
                MessageBox.Show(
"
数据库还原失败!
"
);
            }
        }
        
    }
}

 

 

 

 

转载地址:http://oaeox.baihongyu.com/

你可能感兴趣的文章
solrCloud+zk+tomcat配置
查看>>
Java 程序中的多线程(四)
查看>>
【NOI2018模拟5】三角剖分Bsh
查看>>
redis安装使用
查看>>
git 几款好用的客户端工具
查看>>
拍拍贷月还款的理解
查看>>
【jBox】2.3正式版 多功能jQuery对话框插件下载及常见使用问题解答
查看>>
如何添加localizable.strings本地化
查看>>
css 禁用移动端部分特性
查看>>
安卓OpenGL入门
查看>>
SpeechSynthesizer/WaveHeader 存在严重的内存泄漏
查看>>
Oracle安装后忘记用户名或密码+创建新登陆用户
查看>>
悬浮固定
查看>>
解决Error: could not open ‘……\jre7\lib\i386\jvm.cfg'问题
查看>>
EZOJ #78
查看>>
找工作总结
查看>>
顺序点初解
查看>>
Java 实现Md5算法
查看>>
第二次作业
查看>>
我见过最好的vsftpd配置教程(转)
查看>>