C# winfrom数据库备份与恢复

C#  winfrom数据库备份与恢复

通过C# winfrom来对SQL数据库进行数据库的备份和还原

图1

图2

 //设置保存的路径
        private void btnBaoCun_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog myFolderBrowserDialog = new FolderBrowserDialog();

            //设置根目录在桌面;
            myFolderBrowserDialog.RootFolder = System.Environment.SpecialFolder.Desktop;

            //设置当前选择的路径
            myFolderBrowserDialog.SelectedPath = "C:";

            //允许在对话框中包括一个新建目录的按钮
            myFolderBrowserDialog.ShowNewFolderButton = true;

            //设置对话框的说明信息
            myFolderBrowserDialog.Description = "请选择输出目录";

            if (myFolderBrowserDialog.ShowDialog() == DialogResult.OK)
            {//确认是否保存
                string strLuJing = myFolderBrowserDialog.SelectedPath;//获取路径
                txtBaoCunBeiFen.Text = strLuJing;//赋值给文本显示
            }
        }
        /// <summary>
        /// 创建连接字符串
        /// </summary>
        /// <param name="straddress">连接地址</param>
        /// <param name="SQLname">备份的数据库名称</param>
        /// <returns></returns>
        private static SqlConnection GetConn(string straddress,string SQLname)
        {//创建连接字符串与SQL连接,也可以直接调用DAL中的连接
            SqlConnection conn = new SqlConnection(@"Data Source=" + straddress + ";Initial Catalog=" + SQLname + ";User ID=sa;Password=123");
            return conn;
        }
        private void btnBaoCunBeiFen_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("是否备份数据", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                if (txtBaoCunBeiFen.Text.ToString() != "")
                {
                    //设置连接字符串
                    SqlConnection conn = GetConn("10.20.0.25:14334","zbwx");
                    //实例化SQL可执行的存储过程
                    SqlCommand cmdBK = new SqlCommand();
                    //SQL文本
                    cmdBK.CommandType = CommandType.Text;
                    cmdBK.Connection = conn;
                   // DateTime dtm = new DateTime();
                    string strRiQi = DateTime.Now.Year.ToString() + (DateTime.Now.Month.ToString().Length < 2 ? "0" + DateTime.Now.Month.ToString() : DateTime.Now.Month.ToString()) + (DateTime.Now.Day.ToString().Length < 2 ? "0" + DateTime.Now.Day.ToString() : DateTime.Now.Day.ToString()) + (DateTime.Now.Hour.ToString().Length < 2 ? "0" + DateTime.Now.Hour.ToString() : DateTime.Now.Hour.ToString()) + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
                    cmdBK.CommandText = @"backup database zbwx to disk='" + txtBaoCunBeiFen.Text + "\\" + strRiQi + "" + ".bak'";
                    try
                    {
                        //进入SQL
                        conn.Open();
                        //返回影响行数
                        cmdBK.ExecuteNonQuery();
                        MessageBox.Show("备份成功!");
                        this.Dispose();//释放资源
                        this.Close();//关闭
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("备份失败");
                    }
                    finally
                    {
                        conn.Close();//关闭与SQL的连接
                    }
                }
                else
                {
                    MessageBox.Show("请选择保存路径!");
                }
            }
        }

        private void btnHuanYuan_Click(object sender, EventArgs e)
        {
            //文件控件
            OpenFileDialog filename = new OpenFileDialog();
            //获取路径
            filename.InitialDirectory = Application.StartupPath;
            //设置可打开的文件格式
            filename.Filter = "All files (*.*)|*.bak";
            filename.FilterIndex = 2;
            //是否还原当前路径
            filename.RestoreDirectory = true;
            if (filename.ShowDialog() == DialogResult.OK)
            {
                //处理路径
                string path = filename.FileName.ToString();
                string Name = path.Substring(path.LastIndexOf("\\") + 1);
                txtBaoCunWenJian.Text = path;
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("是否还原数据", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                if (txtBaoCunWenJian.Text.ToString() != "")
                {
                    string databasefile=txtBaoCunWenJian.Text;
                    MessageBox.Show(databasefile);
                    if (RestoreDataBase("zbwx", databasefile))
                    {
                        MessageBox.Show("还原成功!");
                    }
                    else {
                        MessageBox.Show("还原失败!");
                    }
                    this.Dispose();
                    this.Close();
                }
                else
                {
                    MessageBox.Show("请选择文件路径!");
                }
            }
        }

        private void frmShuJuBeiFenYuHuiFu_Load(object sender, EventArgs e)
        {
            string strMoRen = System.Environment.CurrentDirectory;
            txtBaoCunBeiFen.Text = strMoRen;
        }

        SqlConnection constring = new SqlConnection("Data Source=(local);Initial Catalog=master;User ID=sa;Password=123");
        /// <summary>
        /// 还原数据库
        /// </summary>
        /// <param name="databasename">需要还原数据库的名称</param>
        /// <param name="databasefile">文件路径</param>
        /// <returns></returns>
        public bool RestoreDataBase(string databasename,string databasefile)
        {
           // SqlConnection constring = new SqlConnection("Data Source=(local);Initial Catalog=master;User ID=sa;Password=123");
            string sql = " RESTORE DATABASE " + databasename + " from DISK ='" + databasefile + "'" + " WITH REPLACE";//数据库名称和路径 WITH REPLACE是去除日志文件
            SqlCommand sqlcmd = new SqlCommand(sql, constring);
            sqlcmd.CommandType = CommandType.Text;

            try {
                //开始
                constring.Open();
                sqlcmd.ExecuteNonQuery();
            }catch(Exception ex)
            {
                string str = ex.Message;
                constring.Close();
                return false;
            }
            constring.Close();//结束
            return true;
        }

该资料仅供学习,禁止商业用途

时间: 2024-11-07 18:24:08

C# winfrom数据库备份与恢复的相关文章

Oracle数据库备份与恢复的三种方法

转自blueskys567原文Oracle数据库备份与恢复的三种方法, 2006-10. 有删改 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份. 导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去. 1. 简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的

小贝_mysql数据库备份与恢复

mysql数据库备份与恢复 简要:        一.数据库备份 二.数据库恢复 一.数据库备份 1.备份简单说明 : 系统运行中,增量备份与整体备份 例: 每周日整体备份一次,周一到周六备份当天 如果周五出了问题,则可以用周日的整体+周一,二,三,四来恢复 2.备份工具 a.第三方收费备份工具 b.系统自带备份功能即mysqldump(可以导出库.表) c.利用outfile和infile 2.1.mysqldump使用例子 例1.导出某个库下的表 mysqldump–u用户名 –p密码库名

MySQL/MariaDB数据库备份与恢复

前言 数据库一般存放着企业最为重要的数据,它关系到企业业务能否正常运转,数据库服务器总会遇到一些不可抗拒因素,导致数据丢失或损坏,而数据库备份可以帮助我们避免由于各种原因造成的数据丢失或着数据库的其他问题.本文将讲解MySQL/MariaDB数据库的几种备份方法. 基础知识 备份类型 完全备份:备份整个数据库 部分备份:仅备份其中的一张表或多张表 增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分 差异备份:备份上次备份后变化的数据部分,和增量备份区别在于差异备份只可以相对完全备份做备份

简单的数据库备份与恢复类

/** * 数据库备份与恢复类 * @author Administrator */ public class Beifen { /** * 数据库备份 * @param cmd 备份命令 * @param filePath 备份文件保存位置 * @return * @throws IOException */ public static boolean sqlDump(String cmd, String filePath) throws IOException { boolean falg

数据库备份与恢复方案

数据安全性 随着计算机的普及和信息技术的进步,特别是计算机网络的飞速发展,信息安全的重要性日趋明显.数据备份是保证信息安全的一个重要方法. 只要发生数据传输.数据存储和数据交换,就有可能产生数据故障.这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失.有时造成的损失是无法弥补与估量的. 数据故障的形式是多种多样的.通常,数据故障可划分为系统故障.事务故障和介质故障三大类.从信息安全数据库备份与恢复方案的角度出,实际上第三方或敌方的"信息攻击",也会产生不同种类的数据故障

烂泥:SQL Server 2005数据库备份与恢复

本文由秀依林枫提供友情赞助,首发于烂泥行天下. 服务器的迁移,因为业务使用的数据库是SQL Server 2005,所以就要首先对数据库进行备份. 备份可以分为手动备份和自动备份,我们先来介绍手动备份. 打开SQL Server Management Studio, 点击要备份的数据库-"任务"-" 备份",如下图: 在"磁盘"选项中,选择自己要把数据库备份文件存放的磁盘,如下图: 以上操作完毕后,我们点击完成,数据库就开始备份,如下图: 通过上

Oracle 10g数据库备份与恢复操作手册

Oracle 10g数据库备份与恢复操作手册 前言 文档目的 备份与恢复是数据库管理中最重要的方面之一.如果数据库崩溃却没有办法恢复它,那么对企业造成的毁灭性结果可能会是数据丢失.收入减少.客户不满等.不管公司是使用单个数据库还是多个数据库来存储数百  GB或    TB的数据,它们都有一个共同点,即需要制订一个备份与恢复方案来备份重要数据并使自身免于灾难.要制定一个适合自己公司情况的合理的备份与恢复方案,就必须熟悉备份与恢复的方法和操作. 为了给 Oracle DBA和相关技术人员提供一个参考

深入oracle 12c数据库备份与恢复(优化RMAN性能、Oracle flashback技术)

课程讲师:小流老师 课程分类:Oracle 适合人群:高级 课时数量:15课时 更新程度:完成 服务类型:C类(普通服务类课程) 用到技术:oracle 涉及项目:oracle 12c数据库备份与恢复 需要更多相关资料可以联系 Q2748165793 课程提纲 第一讲:介绍备份和恢复相关操作 备份和恢复的目标 备份和恢复的解决方案 Oracle flashback技术 第二讲:开始RMAN操作和RMAN体系架构 RMAN的环境 RMAN Channels RMAN Repository RMAN

oracle 12c数据库备份与恢复教程

深入oracle 12c数据库备份与恢复(优化RMAN性能.Oracle flashback技术)课程讲师:小流老师 课程分类:Oracle适合人群:高级课时数量:15课时用到技术:oracle涉及项目:oracle 12c数据库备份与恢复咨询QQ:1337192913 课程简介:   学习最新ORACLE 12c数据库备份与恢复的相关的知识,讲解RMAN的体系结构,并通过大量的实践操作完成各种场景的备份与恢复操作.优化RMAN性能.诊断并处理数据库备份和恢复中出现的问题, 以实际的项目管理角度