如何在C#winForms中恢复MS Access数据库zip文件?

如何在C#winForms中恢复MS Access数据库zip文件?,c#,winforms,ms-access,zip,database-restore,C#,Winforms,Ms Access,Zip,Database Restore,我使用MS Access作为数据库,用C#编写了这段备份和恢复代码。我完成了zip格式的备份,现在我想恢复压缩文件。任何帮助都将不胜感激 public void BackupDatabase(string dateToday) { string dbFileName = "dbCPS.accdb"; string CurrentDatabasePath = Path.Combine(Environment.CurrentDirectory , d

我使用MS Access作为数据库,用C#编写了这段备份和恢复代码。我完成了zip格式的备份,现在我想恢复压缩文件。任何帮助都将不胜感激

public void BackupDatabase(string dateToday)
    {

        string dbFileName = "dbCPS.accdb";
            string CurrentDatabasePath = Path.Combine(Environment.CurrentDirectory , dbFileName);
            string backTimeStamp = Path.GetFileNameWithoutExtension(dbFileName) + "_" + dateToday + ".zip";// +Path.GetExtension(dbFileName);
            string destFileName = backTimeStamp;// +dbFileName;
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            if (fbd.ShowDialog() == DialogResult.OK)
            {
                string PathtobackUp = fbd.SelectedPath.ToString();
                destFileName = Path.Combine(PathtobackUp, destFileName);

                //File.Copy(CurrentDatabasePath, destFileName, true);
                using (var zip = new ZipFile())
                {
                    zip.AddFile(dbFileName);
                    zip.Save(destFileName);
                }
                MessageBox.Show("Backup successful! ");                  
            }            
    }

private void backupToolStripMenuItem1_Click(object sender, EventArgs e)
    {            
        BackupDatabase(DateTime.Now.ToString("ddMMMyyyy_HH.mm"));
    }


public void RestoreDatabase(string restoreFile)
    {
        string dbFileName = "dbCPS.accdb";
        string pathBackup = restoreFile;
        string CurrentDatabasePath = Path.Combine(Environment.CurrentDirectory, dbFileName);
        File.Copy(pathBackup, CurrentDatabasePath, true);
        MessageBox.Show("Restore successful! "); 
    }

private void restoreToolStripMenuItem_Click(object sender, EventArgs e)
    {
        try
        {                
            openFileDialogBackUp.FileName = "dbCPS";
            openFileDialogBackUp.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory + @"Sauvegardes";
            if (openFileDialogBackUp.ShowDialog() == DialogResult.OK)
                RestoreDatabase(openFileDialogBackUp.FileName);
        }
        catch (Exception error)
        {
            MessageBox.Show(error.ToString());
        }
    }
这段代码提取压缩文件,但我不知道如何同时进行恢复

        using (ZipFile zip = ZipFile.Read(restoreFile))
        {
            zip.ExtractAll(@"C:\Users\Desktop\backup");
        }

根据MSDN文档,您应该能够将zip文件直接解压缩到目标文件夹。您现有的“还原”代码只是将文件复制到
CurrentDatabasePath
,因此您可能会看到一条语句,如

System.IO.Compression.ZipFile.ExtractToDirectory(pathToZipFile, CurrentDatabasePath);

…这就是一切。(我会自己测试它,但是
ZipFile
显然是在.NET4.5中添加的,而且我的Visual Studio副本太旧了。)

我将替换此代码吗?Copy(pathBackup,CurrentDatabasePath,true)@维弗是这样的,是的。与其将文件复制到
CurrentDatabasePath
中,不如将zip文件的内容提取到该位置。然后它将覆盖现有数据库?@ViFer我认为是这样,但唯一确定的方法是测试它。(如我所说,我的Visual Studio版本太旧,无法在
System.IO.Compression
中支持该功能)