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。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库