c#实现数据库的备份

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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。

posted @   第八种格调的男人  阅读(932)  评论(0编辑  收藏  举报
编辑推荐:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示