[转载]c#中数据库的备份和恢复
2007-07-27 14:01
459 查看
//数据备份菜单点击事件 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; } } } |
相关文章推荐
- C#源码 备份和恢复数据库
- [转载]SQL Server 2000数据库的备份与恢复
- C#可定制的数据库备份和恢复程序
- C#可定制的数据库备份和恢复程序
- 用C#备份与恢复数据库
- 【C#】数据库备份及还原的实现代码【转载】
- [转载]如何用SQLDMO在ASP.NET页面下实现数据库的备份与恢复
- C#可定制的数据库备份和恢复程序
- C#可定制的数据库备份和恢复程序
- C#源码 备份和恢复数据库
- [转载]如何用SQLDMO在ASP.NET页面下实现数据库的备份与恢复
- c#中数据库的备份和恢复
- C#可定制的数据库备份和恢复程序
- c#中数据库的备份和恢复
- 在cmd、C#中使用命令为PostgreSQL创建数据库、登录角色,并对数据库进行备份和恢复
- C#_备份恢复数据库
- C#操作ACCESS数据库(创建,压缩,备份,恢复)(转载)
- c#中数据库的备份和恢复
- 如何用SQLDMO在ASP.NET页面下实现数据库的备份与恢复(转载)
- C#可定制的数据库备份和恢复程序 (讲解流程)