本文配套源碼
申明:本系列課程是專為新手們寫來入門練習用的,目的是想通過一個完整的問卷調查管理系統案例來讓新手們了解、加深或是熟悉項目的開發流程及
在.NET平台上使用VS2005和C# 進行Windows方面的編程;在整個課程的設計上,我盡量避開或是根本不討論底層的以及性能優化等方面的東西,
故高手完全可以無視本系列課程。
本課將帶領大家一起來實現數據庫導出與還原、窗口管理等輔助功能。這些功能並非本案例系統的主要功能,只是一些輔助上的功能,
故本課程的只是提取幾個功能出來簡單的講解一下其實現的原理或方法,至於其設計的思路在這裡就不講了,似乎沒有什麼可講的^_^
下面進入主題吧……
一、數據庫導出與還原功能的實現
大家在一些系統裡應該也看到過數據庫導出與還原的功能,不知道大家在使用的時候有沒有去想過其實現的原理?其實,其實現的原理與邏輯是非常之簡單的:
導出時,找到其數據庫存放的位置及其名稱,之後用一個File.Copy()方法將其COPY到新的位置即可;
而還原,正好是相反,即從新的位置COPY到當前系統數據庫的位置,
並覆蓋掉當前系統的數據庫;其實現的代碼如下所示:
/**//// <summary>
/// 導出數據庫
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BakDbToolStripMenuItem_Click(object sender, EventArgs e)
{
string dbpath = @"..\..\DataBase\Lj_QuestionnaireSys.mdb";//獲取當前數據庫路徑,如有問題請在前面加上"..\..\",但在發布時要去掉前面的"..\..\"
string _dbpath = dbpath.Substring(dbpath.LastIndexOf('\\'));//取出數據庫的名稱
SaveFileDialog saveFileDialog = new SaveFileDialog();//打開保存路徑的對話框
saveFileDialog.Filter = "Access數據庫文件(*.mdb)|*.mdb"; //設置保存的文件類型
saveFileDialog.Title = "請選擇保存的路徑";//對話框標題
saveFileDialog.RestoreDirectory = true;//當對話框關閉前還原到當前目錄狀態
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
File.Copy(dbpath, saveFileDialog.FileName,true);//將數據庫文件復制到選擇的新路徑位置
MessageBox.Show("導出成功!請妥善保管好您所導出的數據庫!^_^","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch (Exception)
{
MessageBox.Show("導出失敗!請重新導出!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
/**//// <summary>
/// 還原數據庫
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void RDbToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("注:此操作將會還原掉現有的數據庫,且不可恢復,請謹慎操作!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK)
{
string dbpath = @"..\..\DataBase\Lj_QuestionnaireSys.mdb";//獲取當前數據庫路徑,如連接有問題請在前面加上"..\..\",但在發布時要去掉前面的"..\..\"
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Access數據庫文件(*.mdb)|*.mdb";
ofd.Title = "請選擇要還原的數據庫,並打開";
ofd.RestoreDirectory = true;
if (ofd.ShowDialog() == DialogResult.OK)
{
try
{
File.Copy(ofd.FileName, dbpath, true);//將選擇要還原的數據庫覆蓋掉當前的數據庫
MessageBox.Show("還原成功!請刷新相應列表!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception)
{
MessageBox.Show("還原失敗!請檢查要還原的數據庫是否正確!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}