C#备份数据库文件

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;
                }
            }
        }
    }
}
相关推荐
Cosolar9 小时前
不收费、不加水印、数据归你:我做了个开源的在线简历工具
后端·面试·前端框架
小蒜学长10 小时前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
陈随易11 小时前
下载神器!Motrix 停更三年后重写回归
前端·后端·程序员
每天一道题11 小时前
CAP、Raft 与多数派:分布式系统如何达成一致?
分布式·后端·微服务
前端的日常11 小时前
一个人+AI做情侣食谱小程序,0 费用的服务器
前端·后端
IT_陈寒12 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端
ServBay13 小时前
本地模型已经跑起来了,Copilot Fusion 为什么还要联网?
后端·ai编程·github copilot
武子康13 小时前
H3-World 的动作没按时发生,先检查时间线变成了什么
人工智能·后端·agent
苍何13 小时前
腾讯 Buddy One 来了,办公全家桶一键打通WorkBuddy(附教程)
后端
GIS数据转换器14 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts