c#实现数据库的备份

在.NET开发后天管理系统的时候,数据库的备份功能是必须实现的一块,而在数据库备份方面一句sql语句就可以搞定了,那就是<Backup Database 数据库名To disk='路径数据库备份名.bak' >。基于此语句开始实现备份功能。

首先需要封装一个连接数据库的help类

   public SqlEmploy()
    { }
    public string MyConnStr
    {
        get
        {
                 return System.Configuration.ConfigurationManager.ConnectionStrings["SHDSConnectionString"].ToString();
        }
    }

    public int Back_up(string sql, SqlParameter[] para, CommandType type)
    {
        SqlConnection conn = new SqlConnection(MyConnStr);
        try
        {
            SqlCommand cmd = new SqlCommand(sql, conn);
            if (conn.State == ConnectionState.Closed || conn.State == ConnectionState.Broken)
            {
                conn.Open();
            }

            if (para != null && para.Length > 0)
            {
                foreach (SqlParameter p in para)
                {
                    cmd.Parameters.Add(p);
                }
            }

            cmd.CommandType = type;
            int count = cmd.ExecuteNonQuery();
            return count;
        }
        finally
        {
            conn.Close();
        }
    }

  然后我们选择一个Button控件,写一个Click方法

protected void Button1_Click(object sender, EventArgs e)
    {
        string newname = "SHDH" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + ".bak";       
        string nepath = Server.MapPath("~/DataBack/") + newname;
        string sql = "BACKUP DATABASE SHDS to DISK ='" + nepath + "'";
        int i = help.Back_up(sql,null,System.Data.CommandType.Text);
        if (i==-1)
        {
            Label1.Text = "已成功备份到服务器路径:" + nepath;

        }
        else
        {
            Label1.Text = "备份数据库出错,该文件可能不存在!";
            Label1.Visible = true;
        }

    }

  为什么上面的i是-1,这个我想大家一定有疑问,我在查看ExecuteNonQuery()方法的时候,有这样一句话“ExecuteNonQuery()方法对数据库结构的操作,如果操作成功时返回的却是-1”所以,在基本的数据操作ExecuteNonQuery()方法返回的就是影响的数据行数,而在操作数据库结构之类的方面,他成功之后返回的就是-1,所以i==-1。

原文地址:https://www.cnblogs.com/widows/p/9049552.html