在.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。