zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    23.java方法的深入
    MapReduce:详解Shuffle过程
    Hadoop1.x与Hadoop2的区别
    进程控制的一些api
    程序的静态链接,动态链接和装载
    用户级线程和内核级线程的区别
    从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构) (转)
    海量处理面试题
    面试中的二叉树题目
    linux 进程间消息队列通讯
  • 原文地址:https://www.cnblogs.com/widows/p/9049552.html
Copyright © 2011-2022 走看看