C#簡易電影記錄管理系統:開發九[資料恢複]

來源:互聯網
上載者:User

本期概述

上一期我們學習並實現了該系統的資料備份功能。這一期我們來一起實現下該系統的資料恢複功能.資料恢複是指當資料因外界條件影響而丟失後,我們需要使用先前的備份來恢複資料,從而避免照成不必要的損失.

 

原理

這裡我們的資料恢複主要分兩步: ①讀取Excel資料: 開啟Excel檔案後,調用System.Data.OleDb資料提供者,讀取Excel檔案資料,然後將資料臨時性儲存到DataSet資料集中. ②將讀取到的資料存入SQLServer: 遍曆 DataSet 資料集Record表中的所有行資料, 執行Sql資料庫操作將Record表中的資料插入到Sql Server中;最後調用Sql Server查看資料的方法將匯入的資料重新整理並顯示在DataGridView上.

 

介面設計

我們在管理介面 FrmManager 增加一個 匯入Excel 按鈕  Name:btnImportExcel  如

 

 寫代碼前,我們需要在FrmManager.cs 類裡新增一個命名空間 System.Data.OleDb,用於串連和操作 Excel資料檔案.

using System.Data.OleDb;

 

然後實施代碼,代碼主要分2部分  ①讀取Excel裡的資料  ②將讀取到的資料匯入資料到Sql Server

    public void ImportExcel(String filePath, DataGridView dgv)    {        /******************************* ①開啟Excel檔案 並讀取裡面的資料 ***************************************/        //根據路徑開啟一個Excel檔案並將資料填充到DataSet中 以便 Sql Server 執行資料插入語句時 調用        //03版本 Excel 連接字串       如果用03版本 連接字串 開啟07版本的Excel 會提示報錯 "外部表格不是預期的格式"        //string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;'";        //07版本 Excel 連接字串  這裡使用07版本的 相容03版本        string connExcel = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;'";        OleDbConnection OleDbConn;        try        {            //建立OleDbConn串連             OleDbConn = new OleDbConnection(connExcel);            OleDbConn.Open();            //建立 Excel 資料表            //Microsoft.Office.Interop.Excel.DataTable dtExcel = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);            System.Data.DataTable dtExcel = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);            //擷取Excel表            string tableName = dtExcel.Rows[0][2].ToString().Trim();            tableName = "[" + tableName.Replace("'", "") + "]";            string queryExcel = "select 電影名稱,導演,發行日期 from " + tableName;            //建立資料集ds  用於後期裝載 OleDbDataAdapter 中的擷取的結果            DataSet ds = new DataSet();            OleDbDataAdapter oleAdapter = new OleDbDataAdapter(queryExcel, connExcel);            oleAdapter.Fill(ds, "Record");            OleDbConn.Close();            /*************************** ①Excel檔案資料讀取完成  ***********************************************/            /**************************  ②擷取Excel資料後,將資料匯入到Sql Server ********************************/            string sqlInsert = null; //初始化sql             int n = 0;    //定義一個整數 用於擷取  ExecuteNonQuery()成功執行的行數             //遍曆 ds資料集中的 Record表裡的所有行            foreach (DataRow dr in ds.Tables["Record"].Rows)            {                //建立插入語句                sqlInsert = "insert into Record(Movie_Name,Movie_Director,Date_Released) values('";                //每行有3個欄位  電影名稱,導演 和 發行日期                sqlInsert += dr.ItemArray[0] + "','";                sqlInsert += dr.ItemArray[1] + "','";                sqlInsert += dr.ItemArray[2] + "')";                SqlConnection conn = new SqlConnection(connStr);                SqlCommand cmd = new SqlCommand(sqlInsert, conn);                conn.Open();                n += cmd.ExecuteNonQuery();  //每次成功 +1                conn.Close();            }            //如果 n> 0  表示資料插入成功            if (n > 0)            {                MessageBox.Show("添加成功! 共插入" + n.ToString() + "條資料");            }            else //否則失敗            {                MessageBox.Show("添加失敗!");                return;            }            /**************************  ②資料匯入到Sql Server完成 **********************************************/            //調用refresh方法,在添加完成資料後 自動重新整理DataGridView表 顯示新資料            Refresh();        }        catch (Exception e)        {            //在整個過程中 如果出錯的話 顯示錯誤資訊            MessageBox.Show(e.Message, "錯誤訊息");        }    }    private void btnImportExcel_Click(object sender, EventArgs e)    {        //選擇需要匯入的Excel檔案        OpenFileDialog ofDialog = new OpenFileDialog();        ofDialog.Title = "請選擇需要匯入的Excel檔案";        ofDialog.Filter = "Excel Files(07版本 *.xlsx)|*.xlsx|(03版本 *.xls)|*.xls|所有檔案(*.*)|*.*";        string fullPath = string.Empty;        if (ofDialog.ShowDialog() == DialogResult.OK)        {            fullPath = ofDialog.FileName;        }        if (fullPath == "")        {            MessageBox.Show("未選擇Excel檔案");            return;        }        //調用匯入 Excel檔案方法         ImportExcel(fullPath, dgvManager);    }

 

好了我們來運行下看看

1.首先我們把資料庫資料清空 

 

2.點擊 匯入Excel 按鈕 選擇Excel檔案 

 

3. 顯示添加成功 

 

4.最終資料被匯入到Sql Server 並顯示在DataGridView上

 

到這裡我們的資料恢複就做完了.下一期,我們來共同學習下管理員是如何給普通使用者指派功能許可權的.

 

附上原始碼

MovieRecordManagementSystem09.zip

相關推薦 [點此查看目錄]
  • C#簡易電影記錄管理系統:開發一[使用者登入]
  • C#簡易電影記錄管理系統:開發二[增刪改查]
  • C#簡易電影記錄管理系統:開發三[密碼修改]
  • C#簡易電影記錄管理系統:開發四[日誌查看]
  • C#簡易電影記錄管理系統:開發五[使用者註冊]
  • C#簡易電影記錄管理系統:開發六[資料搜尋]
  • C#簡易電影記錄管理系統:開發七[使用者分類]
  • C#簡易電影記錄管理系統:開發八[資料備份]
  • C#簡易電影記錄管理系統:完結篇[許可權分配]

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.