日期:2014-05-16 浏览次数:20516 次
向数据库的一张表中添加数据,可以采用单个添加,即一条数据、一条数据的添加;也可以采用批量导入,依次将好些条数据写入数据库的一张表中。文本借助实例《添加系列信息》讲解一种向数据库批量导入数据的方法。
观看一下添加系列信息部分的界面设计:
本文主要介绍批量导入系列信息的实现,单个添加的实现不在此文讲解之列!
此项目的实现,我采用简单的三层,看一下项目框架
下面逐层介绍每层实现:
3.1 SqlHelper数据库助手类中添加向数据库表导入数据的方法(SqlHelper.cs)
#region 批量导入datatable /// <summary> /// 批量导入datatable /// </summary> /// <param name="dt">数据表</param> /// <param name="TabelName">数据表名</param> /// <param name="dtColum">列集合</param> public int InsertTable(DataTable dt, string TabelName, DataColumnCollection dtColum) { //打开数据库 GetConn(); try { //声明SqlBulkCopy ,using释放非托管资源 using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn)) { //一次批量的插入的数据量 //sqlBC.BatchSize = 1000; //超时之前操作完成所允许的秒数,如果超时则事务不会提交 ,数据将回滚,所有已复制的行都会从目标表中移除 //sqlBC.BulkCopyTimeout = 60; //設定 NotifyAfter 属性,以便在每插入10000 条数据时,呼叫相应事件。 //sqlBC.NotifyAfter = 10000; // sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied); //设置要批量写入的表 sqlBC.DestinationTableName = TabelName; //自定义的datatable和数据库的字段进行对应 for (int i = 0; i < dtColum.Count; i++) { sqlBC.ColumnMappings.Add(dtColum[i].ColumnName.ToString(), dtColum[i].ColumnName.ToString()); } //批量写入 sqlBC.WriteToServer(dt); } //导入成功,返回1 return 1; } catch { //导入失败返回-1 return -1; } finally { //关闭数据库 conn.Close(); } } #endregion
3.2.DAL层批量导入数据的代码(DaoSeries.cs)
#region 批量导入系列信息 /// <summary> /// 批量导入系列信息 /// </summary> /// <param name="dt">DataTable数据表-dt;</param> /// <param name="dtColum">DataColumnCollection 列集合-dtColum</param> /// <returns>整数:大于0代表导入成功;否则导入失败</returns>