C#实现的SQL备份与还原功能示例
发布时间:2020-12-15 06:03:16 所属栏目:百科 来源:网络整理
导读:本篇章节讲解C#实现的SQL备份与还原功能。供大家参考研究具体如下: //记得加 folderBrowserDialog1 openFileDialog1 控件using System.Data.SqlClient; //连接数据库 公共变量namespace WindowsApplication1.GoodMenhod{class getSqlConnection{
本篇章节讲解C#实现的SQL备份与还原功能。分享给大家供大家参考,具体如下: //记得加 folderBrowserDialog1 openFileDialog1 控件 using System.Data.SqlClient; //连接数据库 公共变量 namespace WindowsApplication1.GoodMenhod { class getSqlConnection { string sql = "Data Source=win7-pc;database=Kc;uid=sa;pwd=sa"; SqlConnection conn; public SqlConnection GetCon() { conn = new SqlConnection(sql); conn.Open(); return conn; } } } using System.Data.SqlClient; using WindowsApplication1.GoodMenhod; //引用命名空间 namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender,EventArgs e) //打开 备份路径 { if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { txtPath.Text = folderBrowserDialog1.SelectedPath.ToString(); } } private void button2_Click(object sender,EventArgs e) //备份名称 保存 { try { if (txtPath.Text != "" ) { getSqlConnection geCon = new getSqlConnection(); SqlConnection con = geCon.GetCon(); string strBacl = "backup database Kc to disk='" + txtPath.Text.Trim() + "" + txtName.Text.Trim() + ".bak'"; SqlCommand Cmd = new SqlCommand(strBacl,con); if (Cmd.ExecuteNonQuery() != 0) { MessageBox.Show("数据备份成功!","提示框",MessageBoxButtons.OK,MessageBoxIcon.Information); this.Close(); } else { MessageBox.Show("数据备份失败!",MessageBoxIcon.Information); } } else { MessageBox.Show("请填写备份的正确位置及文件名!",MessageBoxIcon.Information); }// end } catch (Exception ee) { MessageBox.Show(ee.Message.ToString()); } } } } private void button3_Click(object sender,EventArgs e) //打开 将要还原的文件 { openFileDialog1.FilterIndex = 0; openFileDialog1.FileName = ""; openFileDialog1.Filter = "txt files (*.bak)|*.bak|All files (*.*)|*.*"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { textPaht.Text = openFileDialog1.FileName.ToString(); } } private void button4_Click(object sender,EventArgs e) //还原 { if (textPaht.Text != "") { getSqlConnection geCon = new getSqlConnection(); SqlConnection con = geCon.GetCon(); if (con.State == ConnectionState.Open) { con.Close(); } //连接的数据库是master,所以要初始化新的连接字符串 string DateStr = "Data Source=win7-pc;Database=master;User id=sa;PWD=sa"; SqlConnection conn = new SqlConnection(DateStr); conn.Open(); //-------------------杀掉所有连接 db_CSManage 数据库的进程-------------- // string sql = " SELECT spid FROM master..sysprocesses WHERE dbid=db_id('" + strDBName + "')"; string strSQL = "select spid from master..sysprocesses where dbid=db_id( 'Kc') ";//读取连接当前数据库的进程 SqlDataAdapter Da = new SqlDataAdapter(strSQL,conn); DataTable spidTable = new DataTable(); Da.Fill(spidTable); SqlCommand Cmd = new SqlCommand(); Cmd.CommandType = CommandType.Text; Cmd.Connection = conn; for (int iRow = 0; iRow <= spidTable.Rows.Count - 1; iRow++) { Cmd.CommandText = "kill " + spidTable.Rows[iRow][0].ToString(); //强行关闭用户进程 Cmd.ExecuteNonQuery(); } conn.Close(); conn.Dispose(); //-------------------------------------------------------------------- SqlConnection sqlcon = new SqlConnection(DateStr); sqlcon.Open(); SqlCommand sqlCmd = new SqlCommand("backup database Kc to disk='" + textPaht.Text.Trim() + "' restore database Kc from disk='" + textPaht.Text.Trim() + "'",sqlcon); sqlCmd.ExecuteNonQuery(); sqlCmd.Dispose(); sqlcon.Close(); sqlcon.Dispose(); MessageBox.Show("数据还原成功!","提示",MessageBoxIcon.Information); MessageBox.Show("为了必免数据丢失,在数据库还原后将关闭整个系统。"); Application.Exit(); } else { MessageBox.Show("请选择备份文件!",MessageBoxIcon.Warning); } } 更多关于C#相关内容感兴趣的读者可查看本站专题:《C#常见控件用法教程》、《C#窗体操作技巧汇总》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》 希望本文所述对大家C#程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |