本文配套源碼
申明:本系列課程是專為新手們寫來入門練慣用的,目的是想通過一個完整的問卷調查管理系統案例來讓新手們瞭解、加深或是熟悉項目的開發流程及
在.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);
}
}
}
}