• [转载]c#中数据库的备份和恢复 Virus


    //数据备份菜单点击事件
       private void mnuBackUp_Click(object sender, System.EventArgs e)
       {
        frmBackUp back=new frmBackUp(frmBackUp.SetType.BackUp);
        back.Show();
        //调用dll
        BackUpAndReinstate.BackUp backup=new BackUpAndReinstate.BackUp(Application.StartupPath+"\\BackUp\\TeachingBusiness.bak");
        string message=backup.DataBaseBackUp();
        MessageBox.Show(message,"消息",MessageBoxButtons.OK,MessageBoxIcon.Information);
        back.Close();
       }

       //数据恢复菜单点击事件
       private void mnuReinstate_Click(object sender, System.EventArgs e)
       {
        frmBackUp back=new frmBackUp(frmBackUp.SetType.Reinstate);
        back.Show();
        //调用dll
        BackUpAndReinstate.Reinstate reinstate=new BackUpAndReinstate.Reinstate();
        string message=reinstate.DataBaseReinstate();
        MessageBox.Show(message,"消息",MessageBoxButtons.OK,MessageBoxIcon.Information);
        back.Close();
       }

    frmBackUp窗体代码:

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;

    namespace 教务系统
    {
    /// <summary>
    /// frmBackUp 的摘要说明。
    /// </summary>
    public class frmBackUp : System.Windows.Forms.Form
    {
       private System.Windows.Forms.Label label1;
       private System.Windows.Forms.PictureBox pictureBox1;
       private System.Windows.Forms.Timer timer1;
       private System.ComponentModel.IContainer components;

       public enum SetType
       {
        BackUp,
        Reinstate
       }
       private int type=0;
       public frmBackUp(SetType settype)
       {
        //
        // Windows 窗体设计器支持所必需的
        //
        InitializeComponent();
        this.type=(int)settype;
        //
        //
       }

       /// <summary>
       /// 清理所有正在使用的资源。
       /// </summary>
       protected override void Dispose( bool disposing )
       {
        if( disposing )
        {
         if(components != null)
         {
          components.Dispose();
         }
        }
        base.Dispose( disposing );
       }

       #region Windows 窗体设计器生成的代码
       /// <summary>
       /// 设计器支持所需的方法 - 不要使用代码编辑器修改
       /// 此方法的内容。
       /// </summary>
       private void InitializeComponent()
       {
        this.components = new System.ComponentModel.Container();
        System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(frmBackUp));
        this.label1 = new System.Windows.Forms.Label();
        this.pictureBox1 = new System.Windows.Forms.PictureBox();
        this.timer1 = new System.Windows.Forms.Timer(this.components);
        this.SuspendLayout();
        //
        // label1
        //
        this.label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
        this.label1.Location = new System.Drawing.Point(8, 8);
        this.label1.Name = "label1";
        this.label1.Size = new System.Drawing.Size(256, 64);
        this.label1.TabIndex = 0;
        this.label1.Text = "正在备份数据,请稍侯......";
        this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
        //
        // pictureBox1
        //
        this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
        this.pictureBox1.Location = new System.Drawing.Point(24, 16);
        this.pictureBox1.Name = "pictureBox1";
        this.pictureBox1.Size = new System.Drawing.Size(64, 48);
        this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
        this.pictureBox1.TabIndex = 1;
        this.pictureBox1.TabStop = false;
        //
        // timer1
        //
        this.timer1.Interval = 300;
        this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
        //
        // frmBackUp
        //
        this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
        this.ClientSize = new System.Drawing.Size(272, 80);
        this.Controls.Add(this.pictureBox1);
        this.Controls.Add(this.label1);
        this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        this.Name = "frmBackUp";
        this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
        this.Text = "备份数据...";
        this.Load += new System.EventHandler(this.frmBackUp_Load);
        this.ResumeLayout(false);

       }
       #endregion

       private void timer1_Tick(object sender, System.EventArgs e)
       {
        this.pictureBox1.Image.RotateFlip(RotateFlipType.Rotate90FlipXY);
        this.pictureBox1.Refresh();
       }

    //   public void setType(SetType)
    //   {
    //   
       private void frmBackUp_Load(object sender, System.EventArgs e)
       {
        if(this.type==(int)SetType.BackUp)
         this.label1.Text="正在备份数据,请稍侯......";
        else if(this.type==(int)SetType.Reinstate)
         this.label1.Text="正在恢复数据,请稍侯......";
        this.timer1.Start();
       }
    }
    }

    BackUpAndReinstate组件中的类:(BackUp类和Reinstate类)

    BackUp类:

    using System;
    using System.Data;
    using System.Data.SqlClient;

    namespace BackUpAndReinstate
    {
    /// <summary>
    /// 数据备份类
    /// </summary>
    public class BackUp
    {
       private SqlConnection con=null;       //数据库连接对象
       private string filepath=null;        //备份路径

       //单参构造
       public BackUp(string filepath)
       {
        con=new SqlConnection("database=master;user id=sa;password=sa;data source=(local)");
        this.filepath=filepath;
       }

       //数据备份方法
       public string DataBaseBackUp()
       {
        string str="";
        SqlCommand cmd=new SqlCommand();
        cmd.Connection=con;
        cmd.CommandText="select name from sysdevices where name='TeachingBusiness'";
        con.Open();
        SqlDataReader rdr=cmd.ExecuteReader();
        if(!rdr.Read())
        {
         rdr.Close();
         SqlCommand backcmd=new SqlCommand();
         backcmd.Connection=con;
         backcmd.CommandText="EXEC sp_addumpdevice @devtype,@logicalname,@physicalname";
         SqlParameter param=backcmd.Parameters.Add("@devtype",SqlDbType.VarChar,20);
         param.Value="disk";
         param=backcmd.Parameters.Add("@logicalname",SqlDbType.VarChar,20);
         param.Value="TeachingBusiness";
         param=backcmd.Parameters.Add("@physicalname",SqlDbType.NVarChar,260);
         param.Value=this.filepath;
         backcmd.ExecuteNonQuery();
        }
        rdr.Close();
        try
        {
         cmd.ExecuteNonQuery();
        }
        catch(SqlException er)
        {
         str=er.Message;
         return str;
        }
        cmd.CommandText="backup database TeachingBusiness to TeachingBusiness";
        try
        {
         cmd.ExecuteNonQuery();
        }
        catch(SqlException er)
        {
         str=er.Message;
         return str;
        }
        finally
        {
         con.Close();
        }
        str="已备份成功!";
        return str;
       }
    }
    }

    Reinstate类:

    using System;
    using System.Data;
    using System.Data.SqlClient;

    namespace BackUpAndReinstate
    {
    /// <summary>
    /// 数据恢复类
    /// </summary>
    public class Reinstate
    {
       private SqlConnection con=null;        //数据库连接对象

       //默认构造
       public Reinstate()
       {
        con=new SqlConnection("database=master;user id=sa;password=sa;data source=(local)");
       }

       //数据恢复方法
       public string DataBaseReinstate()
       {
        string str="";
        SqlCommand cmd=new SqlCommand();
        cmd.Connection=con;
        cmd.CommandText="RESTORE DATABASE TeachingBusiness FROM TeachingBusiness with replace";
        con.Open();
        try
        {
         cmd.ExecuteNonQuery();
        }
        catch(SqlException er)
        {
         str=er.Message;
         return str;
        }
        finally
        {
         con.Close();
        }
        str="已成功恢复数据库";
        return str;
       }
    }
    }

    BackUpAndReinstate组件中的类:(BackUp类和Reinstate类)

    BackUp类:

    using System;
    using System.Data;
    using System.Data.SqlClient;

    namespace BackUpAndReinstate
    {
    /// <summary>
    /// 数据备份类
    /// </summary>
    public class BackUp
    {
       private SqlConnection con=null;       //数据库连接对象
       private string filepath=null;        //备份路径

       //单参构造
       public BackUp(string filepath)
       {
        con=new SqlConnection("database=master;user id=sa;password=sa;data source=(local)");
        this.filepath=filepath;
       }

       //数据备份方法
       public string DataBaseBackUp()
       {
        string str="";
        SqlCommand cmd=new SqlCommand();
        cmd.Connection=con;
        cmd.CommandText="select name from sysdevices where name='TeachingBusiness'";
        con.Open();
        SqlDataReader rdr=cmd.ExecuteReader();
        if(!rdr.Read())
        {
         rdr.Close();
         SqlCommand backcmd=new SqlCommand();
         backcmd.Connection=con;
         backcmd.CommandText="EXEC sp_addumpdevice @devtype,@logicalname,@physicalname";
         SqlParameter param=backcmd.Parameters.Add("@devtype",SqlDbType.VarChar,20);
         param.Value="disk";
         param=backcmd.Parameters.Add("@logicalname",SqlDbType.VarChar,20);
         param.Value="TeachingBusiness";
         param=backcmd.Parameters.Add("@physicalname",SqlDbType.NVarChar,260);
         param.Value=this.filepath;
         backcmd.ExecuteNonQuery();
        }
        rdr.Close();
        try
        {
         cmd.ExecuteNonQuery();
        }
        catch(SqlException er)
        {
         str=er.Message;
         return str;
        }
        cmd.CommandText="backup database TeachingBusiness to TeachingBusiness";
        try
        {
         cmd.ExecuteNonQuery();
        }
        catch(SqlException er)
        {
         str=er.Message;
         return str;
        }
        finally
        {
         con.Close();
        }
        str="已备份成功!";
        return str;
       }
    }
    }

    Reinstate类:

    using System;
    using System.Data;
    using System.Data.SqlClient;

    namespace BackUpAndReinstate
    {
    /// <summary>
    /// 数据恢复类
    /// </summary>
    public class Reinstate
    {
       private SqlConnection con=null;        //数据库连接对象

       //默认构造
       public Reinstate()
       {
        con=new SqlConnection("database=master;user id=sa;password=sa;data source=(local)");
       }

       //数据恢复方法
       public string DataBaseReinstate()
       {
        string str="";
        SqlCommand cmd=new SqlCommand();
        cmd.Connection=con;
        cmd.CommandText="RESTORE DATABASE TeachingBusiness FROM TeachingBusiness with replace";
        con.Open();
        try
        {
         cmd.ExecuteNonQuery();
        }
        catch(SqlException er)
        {
         str=er.Message;
         return str;
        }
        finally
        {
         con.Close();
        }
        str="已成功恢复数据库";
        return str;
       }
    }
    }

     

    【Blog】http://virusswb.cnblogs.com/

    【MSN】jorden008@hotmail.com

    【说明】转载请标明出处,谢谢

    反馈文章质量,你可以通过快速通道评论:

  • 相关阅读:
    Codeforces Round #578 (Div. 2) 训练总结及题解
    docker
    使用java遍历Map集合的方式
    SpringCloud集成rabbitmq:org.springframework.amqp.AmqpConnectException: java.net.ConnectException的解决办法
    创建新Docker容器时出现“The container name "/xxx" is already in use by container xxxxxxxxxxx...”问题的解决办法
    springBoot 项目中,使用定时任务报错
    java获取当前日期和前一周、前一月、前一年的日期
    用户行为PV&UV
    使用IDEA开发,多模块依赖中,找不到依赖: 程序包xxx.xxx.xxx不存在的问题
    Java获取本地IP地址和主机名
  • 原文地址:https://www.cnblogs.com/virusswb/p/833650.html
Copyright © 2020-2023  润新知