c# 备份还原 例子

//记得加 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("数据备份失败!", "提示框", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }else
                {
                    MessageBox.Show("请填写备份的正确位置及文件名!", "提示框", MessageBoxButtons.OK, 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("数据还原成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                MessageBox.Show("为了必免数据丢失,在数据库还原后将关闭整个系统。");
                Application.Exit();
            }else
            {
                MessageBox.Show("请选择备份文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

版权声明:本文为zengzhan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。