//数据备份菜单点击事件
              
                 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;
              
                 }
              
              }
              
              }