您的位置:首页 > 编程语言 > C#

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

2012-03-06 07:21 609 查看
本期概述

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

原理

这里我们的数据恢复主要分两步: ①读取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#简易电影记录管理系统:完结篇[权限分配]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐