c#备份数据库文件完整代码
sqlServer 存储过程:
- USE [PSIDBase]
- GO
- /****** Object: StoredProcedure [dbo].[sp_BackupDB] Script Date: 2023/8/31 16:49:02 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ALTER procedure [dbo].[sp_BackupDB]
- @savePath nvarchar(4000) -- 备份数据库保存位置(目录)
- ,@dbName nvarchar(4000) -- 需要进行备份的数据库
- ,@bakName nvarchar(4000) -- 备份文件的名称(不含扩展名)
- as begin
- declare @sql nvarchar(4000)
- /* 验证路径 */
- if(charindex('/',reverse(@savePath))!=1) begin
- set @savePath=@savePath+'/'
- end
- /* 拼SQL并执行 */
- set @sql='backup database '+@dbName+' to disk='''+@savePath+@bakName+'.bak'''
- exec sp_executesql @sql
-
- /* 返回执行结果(1=成功,0=失败) */
- if(@@error=0) begin
- return 1
- end
- return 0
- end
-
-
App.config添加配置项
- <?xml version="1.0" encoding="utf-8"?>
- <configuration>
- <startup>
- <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
- </startup>
- <connectionStrings>
- <add name="connStr" connectionString="server=PC-20191008BGNB\SQLEXPRESS;database=***;uid=**;pwd=***;" providerName="System.Data.SqlClient"/>
- </connectionStrings>
- <appSettings>
- <add key="DbName" value="PSIDBase"/>
- </appSettings>
- </configuration>
DAL文件:
- /// <summary>
- /// 备份数据
- /// </summary>
- /// <param name="path"></param>
- /// <param name="dbName"></param>
- /// <param name="backupName"></param>
- /// <returns></returns>
- public int BackupData(string path, string dbName, string backupName)
- {
- SqlParameter[] paras =
- {
- new SqlParameter("@savePath",path),
- new SqlParameter("@dbName",dbName),
- new SqlParameter("@bakName",backupName),
- new SqlParameter("@return",SqlDbType.Int,4)
- };
- paras[3].Direction = ParameterDirection.ReturnValue;//返回值参数
- SqlHelper.ExecuteNonQuery("sp_BackupDB", 2, paras);
- return paras[3].Value.GetInt();
- }
BLL:
- /// <summary>
- /// 备份数据
- /// </summary>
- /// <param name="path"></param>
- /// <returns></returns>
- public bool BackupData(string path)
- {
- bool bl = false;
- string dbName = ConfigurationManager.AppSettings["DbName"].ToString();
- string backupName = dbName + DateTime.Today.ToString("yyyyMMdd");
- int reVal = sysDAL.BackupData(path, dbName, backupName);
- bl = reVal == 1 ? true : false;
- return bl;
- }
窗体调用:
- using PSI.BLL;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using WinPSI.Common;
-
- namespace WinPSI.SM
- {
- public partial class FrmBackUpData : Form
- {
- public FrmBackUpData()
- {
- InitializeComponent();
- }
- private Verify verify = new Verify();
-
- private void btnCancel_Click(object sender, EventArgs e)
- {
- this.Close();
- }
-
- private void FrmBackUpData_Load(object sender, EventArgs e)
- {
- txtPath.Clear();
- }
- /// <summary>
- /// 选择备份位置
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnChoose_Click(object sender, EventArgs e)
- {
- FolderBrowserDialog ofd = new FolderBrowserDialog();
- if(ofd.ShowDialog()==DialogResult.OK)
- {
- txtPath.Text = ofd.SelectedPath;
- }
- }
- private void btnOK_Click(object sender, EventArgs e)
- {
- string path = txtPath.Text.Trim();
- if (string.IsNullOrEmpty(path))
- {
- MsgBoxHelper.MsgErrorShow("请选择备份文件存放的位置!");
- return;
- }
- if (MsgBoxHelper.MsgBoxConfirm("备份数据", "您确定要备份数据库吗?") == DialogResult.Yes)
- {
- SysBLL sysBLL = new SysBLL();
- bool bl = sysBLL.BackupData(path);
- if (bl)
- {
- MsgBoxHelper.MsgBoxShow("备份数据", "系统数据备份完毕!");
- }
- else
- {
- MsgBoxHelper.MsgErrorShow("数据备份失败!");
- return;
- }
- }
- }
- }
- }