如何在c# winForms中恢复MS Access数据库zip文件
本文关键字:Access MS 数据库 zip 文件 恢复 winForms | 更新日期: 2023-09-27 18:18:41
我在c#中使用MS Access作为其数据库进行备份和恢复代码。我完成了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
显然是在。net 4.5中添加的,我的Visual Studio副本太旧了。)