C#简易电影记录管理系统:开发九[数据恢复]

本期概述

上一期我们学习并实现了该系统的数据备份功能。这一期我们来一起实现下该系统的数据恢复功能.数据恢复是指当数据因外界条件影响而丢失后,我们需要使用先前的备份来恢复数据,从而避免照成不必要的损失.

 

原理

这里我们的数据恢复主要分两步: ①读取Excel数据: 打开Excel文件后,调用System.Data.OleDb数据访问接口,读取Excel文件数据,然后将数据临时性存储到DataSet数据集中. ②将读取到的数据存入SQLServer: 遍历 DataSet 数据集Record表中的所有行数据, 执行Sql数据库操作将Record表中的数据插入到Sql Server中;最后调用Sql Server查看数据的方法将导入的数据刷新并显示在DataGridView上.

 

界面设计

我们在管理界面 FrmManager 增加一个 导入Excel 按钮  Name:btnImportExcel  如下图

C#简易电影记录管理系统:开发九[数据恢复]

 

 写代码前,我们需要在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.首先我们把数据库数据清空 

C#简易电影记录管理系统:开发九[数据恢复]

 

2.点击 导入Excel 按钮 选择Excel文件 

C#简易电影记录管理系统:开发九[数据恢复]

 

3. 显示添加成功 

C#简易电影记录管理系统:开发九[数据恢复]

 

4.最终数据被导入到Sql Server 并显示在DataGridView上

C#简易电影记录管理系统:开发九[数据恢复]

C#简易电影记录管理系统:开发九[数据恢复]

 

到这里我们的数据恢复就做完了.下一期,我们来共同学习下管理员是如何给普通用户分配功能权限的. :)

 

附上源代码

MovieRecordManagementSystem09.zip

相关推荐 [点此查看目录]

你可能感兴趣的:(数据恢复)