C#在上位机端实现对数据库的备份

本文重要实现2个功能:
1.实现在上位机端通过界面实现对数据库备份为.back文件,
2.在数据库SQL 2012中实现还原(.back文件是一种备份文件)

一、上位机端数据库的备份实现

首先设计以及简单的界面,包括3个button,一个textBox,一个label
C#在上位机端实现对数据库的备份_第1张图片
以下 是整个UI界面的cs文件,整个核心是 BackUpData()处理函数

 		//------------选择路径-----------------
        private void btnChoose_Click(object sender, EventArgs e)
        {
            string defaultfilePath = @"G:\deskcommand\进销存货物系统 ";
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.SelectedPath = defaultfilePath;
            if (fbd.ShowDialog() == DialogResult.OK)
                txtPath.Text = fbd.SelectedPath;
        }

        //-----------备份处理-----------------------------
        private void btnBackUpData_Click(object sender, EventArgs e)
        {
            string path = txtPath.Text.Trim();
            if(string.IsNullOrEmpty(path))
            {
                MsgBoxHelper.MsgErrorShow("请选择备份文件存放的位置");
                return;
            }
            SysBLL sysBLL = new SysBLL();
            DialogResult result = MsgBoxHelper.MsgBoxConfirm("备份数据","您确定要备份该数据库吗?");
            if(result==DialogResult.Yes)
            {
                bool bl = sysBLL.BackUpData(path);
                if (bl)
                    MsgBoxHelper.MsgBoxShow("备份数据!", "恭喜,数据库备份成功!");
                else
                {
                    MsgBoxHelper.MsgErrorShow("哎,失败了!!,数据库备份失败!");
                    return;
                }
            }
        }
        //--------------关闭窗体----------------------
        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

BackUpData()处理函数:

 //-----------------------*************---------------------------
  <appSettings>
    <add key="DbName" value="PSIDBase"/>
  </appSettings> 
 //-----------------------*************---------------------------
		/// 
        /// 数据库备份函数
        /// 
        /// 备份路径
        /// 源数据库名称
        /// 备份的.back文件名称
        /// 
        public int BackUpData(string path)
        {
            //在 appconfig配置文件中配置执行存储过程的 key  value值
            // dbName 是原数据库的名称   backupName 是备份名称  格式为 源数据库+备份日期
            string dbName =  ConfigurationManager.AppSettings["DbName"].ToString();
            string backupName = dbName + DateTime.Today.ToString("yyyyMMdd");
            //添加参数,最后一个为返回值
            SqlParameter[] paras =
            {
                new SqlParameter("@savePath",path),
                new SqlParameter("@dbName",dbName),
                new SqlParameter("@bakName",backupName),
                new SqlParameter("@return",SqlDbType.Int)
            };
            paras[3].Direction = ParameterDirection.ReturnValue;//返回值参数
            SqlHelper.ExecuteNonQuery("sp_BackupDB",2,paras);//执行存储过程
            return paras[3].Value.GetInt();
        }
        //-----------------------*************---------------------------
        /// 
        /// 增、删、改的通用方法
        /// 执行Sql语句或存储过程,返回受影响的行数
        /// SQL注入 
        /// 
        /// sql语句或存储过程名
        /// 执行的脚本类型 1:sql语句  2:存储过程
        /// 参数列表
        /// 
        public static int ExecuteNonQuery(string sql, int cmdType, params SqlParameter[] parameters)
        {
            //select @@Identity 返回上一次插入记录时自动产生的ID
            int result = 0;//返回结果
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                //执行脚本的对象cmd
                SqlCommand cmd = BuilderCommand(conn, sql, cmdType, null, parameters);
                result = cmd.ExecuteNonQuery();//执行T-SQL并返回受影响行数
                cmd.Parameters.Clear();
            }
            //using原理:类似于try finally
            return result;
        }

二、还原数据库

使用SQL Server Management还原备份数据库.back文件的操作步骤如下:
(1)登录数据库,可以选择选中要还原的库,也可选择新建数据库。新建完数据库后选中,右键:任务->还原->数据库
C#在上位机端实现对数据库的备份_第2张图片
(2)选择好还原的数据库,并添加

C#在上位机端实现对数据库的备份_第3张图片

C#在上位机端实现对数据库的备份_第4张图片
C#在上位机端实现对数据库的备份_第5张图片
C#在上位机端实现对数据库的备份_第6张图片
C#在上位机端实现对数据库的备份_第7张图片
(3)选择好还原的位置,点击“确定”
C#在上位机端实现对数据库的备份_第8张图片
还原的实质是执行了一个存储过程:
C#在上位机端实现对数据库的备份_第9张图片

你可能感兴趣的:(SQL数据库操作,C#编程相关)