读书人

《项目心得》-简单三层使用DataTable向

发布时间: 2013-02-24 17:58:56 作者: rapoo

《项目经验》--简单三层使用DataTable向数据库表批量导入数据---向SqlServer多张张表中导入数据

前面已经介绍过如何向数据库的一张表中批量导入数据,详情见博客《项目经验---简单三层使用DataTable向数据库表批量导入数据---向SqlServer一张表中导入数据》;本文主要介绍如何向SqlServer的多张表中批量导入数据。


如今有这样一个需求,需要批量导入建筑信息,依据数据库表结构设计,批量导入建筑信息,需要向数据库相应的三张表都写入数据。

看一下数据库表结构设计:

在建筑表(TB_Building)中,BuildingID是主键,在建筑类型表(TB_BuildingType)中BuildingTypeID是主键,建筑表与建筑类型之间的关系通过第三张表(建筑类型关系表《TBR_BuildingTypeLink》)来维护,建筑与建筑类型关系表保证了数据的唯一性! 导入建筑信息,需要同时导入建筑与建筑类型的关系,还需要导入建筑与校区的关系(哪一个校区的建筑)。

《项目心得》-简单三层使用DataTable向数据库表批量导入数据-向SqlServer多张张表中导入数据


下面借助《批量导入建筑信息》的实例讲解批量向数据库多张表导入数据的方法。

1.界面设计

观看一下批量导入建筑信息的界面设计:

《项目心得》-简单三层使用DataTable向数据库表批量导入数据-向SqlServer多张张表中导入数据

2.框架结构

此项目的实现,我依然采用简单的三层,看一下项目框架

《项目心得》-简单三层使用DataTable向数据库表批量导入数据-向SqlServer多张张表中导入数据


3.批量向数据库多张表导入数据的实现

下面逐层介绍向数据库导入数据各层的代码实现:

3.1 SqlHelper数据库助手类中添加向数据库表导入数据的方法(SqlHelper.cs)

/******************************************************************************* *文    件:CreateExcelDataBLL.cs *作    者:mzj *所属小组:评教小组 *文件说明:基础系统-把excel转化为datatable *创建日期:2013年1月23日9:43:16 *修改作者: *修改日期: *修改描述: *版 本 号:V1.0 *版本号变更记录:     ********************************************************************************/using System;using System.Collections.Generic;using System.Linq;using System.Text;//引用各命名空间using System.Data;using System.Data.OleDb;using System.Data.SqlClient;using System.IO;namespace TeachSystem.BLL.CreateExcelDataBLL{    public class CreateExcelDataBLL    {        //构造方法        public CreateExcelDataBLL()        {        }        /// <summary>        /// 传入excel路径,转换为datatable        /// </summary>        /// <param name="url"></param>        /// <returns></returns>        public DataTable CreateExcelDataSource(string url)        {            //定义一个DataTable数据表            DataTable dt = null;            //获得excel数据            string connetionStr = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + url + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";            //从Excel表的Sheet1单元格获取数据            string strSql = "select * from [Sheet1$]";            OleDbConnection oleConn = new OleDbConnection(connetionStr);            OleDbDataAdapter oleAdapter = new OleDbDataAdapter(strSql, connetionStr);            try            {                //把Excel数据填充给DataTable                dt = new DataTable();                oleAdapter.Fill(dt);                //返回数据表                return dt;            }            catch (Exception ex)            {                throw ex;            }            finally            {                oleAdapter.Dispose();                oleConn.Close();                oleConn.Dispose();                //删除上传的Excel文件(因为该文件的存在会占用多余的网站空间)                if (File.Exists(url))                {                    File.Delete(url);                }            }        }    }}

至此批量向数据库多张表导入数据的功能已完成了,对想数据库表导入的数据的合法性还需要自己通过代码进进行判断!


2楼yzb110前天 07:52
读取excel可以采用NPOI开源组件(NET的POI),nn比较好奇的是这貌似都只是理想状态的代码。
Re: mazhaojuan昨天 15:10
回复yzb110n理想状态的代码??
1楼tcl_6666前天 21:58
理想状态?应该是没有考虑到效率,大数据量问题吧

读书人网 >其他数据库

热点推荐