C#数据库的备份(SQL2005)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            this.txtName.Text = "数据库名" + System.DateTime.Now.ToShortDateString();
        }
        //将数据库备份到应用程序的跟目录下
        string connectionString = "server=服务器名;database=数据库名;uid=用户名;pwd=密码";
       
        private void btn_beifen_Click(object sender, EventArgs e)
        {
            try
            {
                string strg = Application.StartupPath.ToString();
                strg = strg.Substring(0, strg.LastIndexOf("\\"));
                strg = strg.Substring(0, strg.LastIndexOf("\\"));
                strg += @"\Data";
                string sqltxt = @"BACKUP DATABASE 数据库名 TO Disk='" + strg + "\\" + txtPath.Text + ".bak" + "'";
                SqlConnection con = new SqlConnection(connectionString);
                con.Open();
                SqlCommand cmd = new SqlCommand(sqltxt, con);
                cmd.ExecuteNonQuery();
                con.Close();
                if (MessageBox.Show("备份成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK)
                {
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
        //选择保存目录事件
        private void btn_open_Click(object sender, EventArgs e)
        {
            folderBrowserDialog1.Description = "请选择备份文件将要保存到的文件夹,如有必要你可以\n通过单击左下角的‘新建文件夹’按钮新建文件夹";
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                txtPath.Text = folderBrowserDialog1.SelectedPath.ToString();
            }
        }
        //开始备份数据到指定目录下的指定文件名
        private void btn_ok_Click(object sender, EventArgs e)
        {
            string filepath="D:\\机房设备资源管理系统数据库备份\\";
            try
            {
                if (txtName.Text != "")
                {
                    if (txtPath.Text != "")
                    {
                         filepath=txtPath.Text.Trim()+"\\";
                    }else
                    {
                        if (MessageBox.Show("你确定要要将数据备份到默认位置:" + filepath + "下吗?", "信息提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
                        {
                            MessageBox.Show("请选择保存位置!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            btn_open_Click(sender, e);
                        }
                        else 
                        {
                            if (!Directory.Exists(filepath))
                            {
                                Directory.CreateDirectory(filepath);
                            }
                        }
                    }
                    SqlConnection con = new SqlConnection(connectionString);
                    con.Open();
                    string strBacl = "backup database 数据库名 to disk='" + filepath + txtName.Text.Trim() + ".bak'";
                    SqlCommand Cmd = new SqlCommand(strBacl, con);
                    if (Cmd.ExecuteNonQuery() != 0)
                    {
                        con.Close();
                        MessageBox.Show("数据备份成功!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show("数据备份失败!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else
                if (txtPath.Text != "" && txtName.Text== "")
                {
                    MessageBox.Show("备份名称为必填项!你必须填写!:", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }// end
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message.ToString());
            }
        }
        private void LK_lbl_option_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            restore rs = new restore();
            rs.Show();
        }
 

    }
}


SQL数据库恢复后台代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsApplication1
{
    public partial class restore : Form
    {
        public restore()
        {
            InitializeComponent();
        }
        string DateStr = "server=服务器名;database=数据库名;uid=用户名;pwd=密码";
        private void restore_Load(object sender, EventArgs e)
        {
            //string strg = Application.StartupPath.ToString();
            //strg = strg.Substring(0, strg.LastIndexOf("\\"));
            //strg = strg.Substring(0, strg.LastIndexOf("\\"));
            //strg += @"\Data";
            //textBox1.Text = strg + "\\" + "MySale.bak";
        }
        /// <summary>
        /// 备份数据库按钮事件
        /// txtName(文本框)用于获取备份文件名,txtPath(文本框)用于获取备份文件路径
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
       
        private void btn_ok_Click(object sender, EventArgs e)
        {
            if (this.txtPath.Text != ""&&this.txtPath.Text != null)
            {
                SqlConnection conn = new SqlConnection(DateStr);
                conn.Open();
                //-------------------杀掉所有连接 db_PWMS 数据库的进程--------------
                string strSQL = "select spid from master..sysprocesses where dbid=db_id( '数据库名') ";
                SqlDataAdapter Da = new SqlDataAdapter(strSQL, conn);
                DataTable spidTable = new DataTable();
                Da.Fill(spidTable);
                SqlCommand Cmd = new SqlCommand();
                Cmd.CommandType = CommandType.Text;
                Cmd.Connection = conn;
                if (spidTable.Rows.Count > 1)
                {//强行关闭非本程序使用的所有用户进程
                    for (int iRow = 0; iRow < spidTable.Rows.Count - 1; iRow++)
                    {
                        Cmd.CommandText = "kill " + spidTable.Rows[iRow][0].ToString();   //强行关闭用户进程
                        Cmd.ExecuteNonQuery();
                    }
                }
                conn.Close();
                conn.Dispose();
                //--------------------------------------------------------------------                
                try
                {
                    string str = "use master restore database 数据库名 from Disk='" + txtPath.Text.Trim() + "'";
                    SqlConnection conn1 = new SqlConnection(DateStr);
                    conn1.Open();
                    SqlCommand cmd = new SqlCommand(str, conn1);
                    cmd.ExecuteNonQuery();
                    if (MessageBox.Show("恢复成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK)
                    {
                        this.Close();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
            }
            else {
                MessageBox.Show("请选择备份文件位置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
      
        /// <summary>
        /// 保存位置选择按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_open_Click(object sender, EventArgs e)
        {
            openFileDialog1.FilterIndex = 0;
            openFileDialog1.FileName = "";
            openFileDialog1.Filter = "txt files (*.bak)|*.bak|All files (*.*)|*.*";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                txtPath.Text = openFileDialog1.FileName.ToString();
            }
        }
    }
 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星火燎猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值