Excel数据导入系统毕业论文.doc_第1页
Excel数据导入系统毕业论文.doc_第2页
Excel数据导入系统毕业论文.doc_第3页
Excel数据导入系统毕业论文.doc_第4页
Excel数据导入系统毕业论文.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

平顶山工业职业技术学院毕业设计Excel数据导入系统毕业论文目录第一章 系统设计相关原理- 9 -1.1 ASP.Net技术介绍- 10 -1.1.1概述- 10 -1.1.2.Net平台结构- 11 -1.1.3程序的执行- 15 -1.1.4优势分析- 15 -1.1.5开发工具- 16 -1.1.6目前版本- 16 -1.1.7.Net战略- 16 -1.2 SQL语句介绍- 17 -1.2.1 SQL的优点- 18 -1.2.2 SQL的使用- 19 -第二章 需求分析- 21 -2.1 系统需要解决的主要问题- 21 -2.2 系统应该具备的基本功能- 22 -第三章 系统总体设计- 23 -3.1基本简介- 23 -3.2 运行环境与功能实现- 23 -3.3 功能实现- 24 -第四章 详细设计- 26 -4.1表的设计- 26 -4.2 系统设计- 30 -4.2.1数据初始化- 30 -4.2.2数据导入- 37 -4.2.3数据导出- 45 -4.2.4错误页面- 47 -总结- 48 -参考文献- 49 -第一章 系统设计相关原理该Excel数据导入系统主要采用ASP.Net2.0、javascript、AJAX等页面技术以及SQL Server2000数据库、开发工具采用微软VS2005,整体设计遵循经典三层架构,整个开发过程遵循软件工程的方法,经过需求分析、总体设计、文档和代码的编制、模块测试和系统实现几个阶段。下面就对这几种技术和方法做一个概述。1.1 ASP.Net技术介绍1.1.1概述2000年6月22日微软正式推出ASP.NET 这个名称,虽然是承袭微软以前的网站/页开发技术 ASP,但两者有著很大的差异。ASP.NET 可以说是微软重新改造 ASP 之后的产品,并将其和所有Microsoft .NET的应用程序,建构在 CLR(Common Language Runtime) 的基础上。程序设计师可以使用 .NET 平台所支援的程序语言 (VB.NET 或是 C#) 来撰写 ASP.NET 程序,当然也包括 Open Source 领域的语言,像是 Perl、Python。若拿 ASP.NET 与先前的 Scripting 技术比较,前者速度快的原因在于,.NET 平台会先把整个网站先编译成一个 (或数个) dll 档案,然后让网站服务器执行。在视窗应用程序过渡到网站应用程序之间的开发工作中,ASP.NET 亦试图让开发人员利用一系列的控件,来建立类似图形用户界面的操作环境。换句话说,ASP.NET 的开发环境,有这两个特点:拥有和视窗环境非常相似的Web 控件:像是 Button、Label 等等。这些控件都有各自的事件,除此之外,也可以利用程序码来设定这些控件的属性。 .NET 平台会自行处理这些控件的所有细节:就好比我们丢一个控件在视窗应用程序,然后在画面上显示的动作类似。差别在于,在 Web 的环境中,.NET 平台会先处理控件在画面 (Web Form) 上产生的 HTML 标签,然后再把处理的结果送到使用者的浏览器中。 与传统的开发方式 (Scripting Programming) 相较,ASP.NET 也鼓励程序设计师采用 事件驱动 (Event-Driven Programming_ 或 使用者图型接口 (GUI)的方式进行开发工作,.NET 平台亦尝试将内建元件 (如 ViewState) 与现有的网页技术 (如 Javascript) 结合。在 ASP.NET 的环境里,开发人员可以在撰写程序码时,把许多控件、类别或工具直接剪下,然后贴在其它类似性质的开发作业中。资料存取 (Data Access) 就是一个例子 (把数据库中的记录显示在画面上)。1.1.2.Net平台结构 .NET 平台是 ASP.NET 的基础核心架构。在这个核心架构中,包括有Runtime Environment (类似 Java 平台)、Virtual Machine|VM 以及 JIT(Jus-in-time)、Class Library、MSIL(MS Intermedia Language)这就是.Net 平台结构图,ASP.NET、Windows Forms和VS.Net都不过是.Net开发平台的一部分,用于.Net应用程序的开发及展示。.Net 平台的核心技术为:通用语言运行时(CLR:Common Language Runtime)、基类库(Base Class Library)、.Net语言及Visual Studio.Net。 .Net Framework是架构在Windows平台上的一个虚拟的运行平台,而且理论上,C#是一种可以跨平台的语言,如果把Windows换作Linux,同样可以使用符合CLS(Common Language Specification,通用语言规范)的.Net语言(VB.Net、C#、JScript.Net等)来创建ASP.NET或Windows Forms(Linux Forms)应用程序的功能,其实这就是Mono计划所要实现的功能。不仅是C#语言,所有.Net语言(将会包括我们常用的几十种现代的编程语言)都可以编写面向CLR的程序代码,这种代码在.Net中被称为托管代码(Managed Code),所有的Managed Code都直接运行在CLR上,具有与平台无关的特性。 C#也是一种(特殊意义上的)解释性的语言。同Java一样,C#编写的程序代码也是先通过C#编译器编译为一种特殊的字节代码MSIL(中间语言,Microsoft Intermediate Language,MSIL),运行的时候再经由特定的编译器(JIT编译器,Just In Time,JITer)编译为机器代码以供操作系统执行。解释性的语言很安全,并且可以通过它的运行平台为其赋予更多的功能,比如自动内存管理、异常处理等。事实上,C#语言的许多特点都是由CLR提供的,下面的CLR结构图说明了这一点。可以看到,类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)、多线程支持(Thread Support)这些C#的特点都是由CLR来提供的。CLR最早被称为下一代Windows服务运行时(NGWS Runtime),是直接建立在操作系统层上的一个虚拟的运行环境,主要的功能是管理代码的运行。在.Net 平台结构图中,CLR的上面是.Net的基类库(Base Class Library,BCL),这组基类库包括了从基本输入输出到数据访问等各方面,提供了一个统一的面向对象的、层次化的、可扩展的编程接口。从.Net 平台结构图中也可以看到,基类库可以被各种语言调用和扩展,也就是说,不管是C#、VB.NET还是VC+.NET,都可以自由地调用.Net的基类库。 事实上, C#并没有属于自己的类库,它所使用的编程接口就是.Net提供的基类库。所以,在决定使用C#时,真正需要费工夫学习的其实是.NET框架的基类库:C#自身只有区区77个关键词,而且其语法对许多程序员来说都是他们非常熟悉的。BCL则相反,它包含了超过4500个以上的类和无数的方法、属性,在你的C# 程序中随时都可能会用到它来完成自己的任务。 很多人都思考过应如何开始学习一种新的语言,对于一个有经验的编程人员来讲,这确非难事。但是对于一个对编写代码一无所知的人而言,如果你是以C#开始你的编程之旅的,数目繁多的概念及新名词可能会令你有些不知所措。这时候请注意你的学习顺序,任何一种编程语言的学习都是按照运行平台、语法、基类库直至各方面的应用这一顺序来进行的,但是在实际的学习中,它们之间并不是孤立的。推荐的方法是:对运行平台和语法有了一个整体的认识后,在应用中学习各种基类库的用法。鉴于C#这一语言的特殊性,全面了解它的运行平台(.NetFramework)必会使你的学习事半功倍。所以请记住上面提到的两个图,在以后的学习中,虽然可能不会明确的涉及到它们,但是在整个C#的学习过程中,它们却是无处不在的。 还有一个很重要的概念需要你明白,这就是公共语言架构(Common Language Infrastructure ,CLI)。CLI是CLR的一个子集,也就是.NET中最终对编译成MSIL代码的应用程序的运行环境进行管理的那一部分。在CLR结构图中CLI位于下半部分,主要包括类加载器(Class Loader)、实时编译器(IL To Native Compilers)和一个运行时环境的垃圾收集器(Garbage Collector)。CLI是.Net和CLR的灵魂,CLI为IL代码提供运行的环境,你可以将使用任何语言编写的代码通过其特定的编译器转换为MSIL代码之后运行其上,甚至还可以自己写MSIL代码在CLI上面运行。如你所知,欧洲计算机制造商协会(ECMA)已经于2001年10月13日批准C#语言规范(ECMA-334)成为一种新诞生的计算机产业标准。同时国际标准组织ISO也同意该标准进入该组织的审批阶段。并且,作为.Net与CLR的核心部分,CLI与C#也同时获得了ECMA的批准(ECMA-335)。拥有了C#与CLI这两项标准,你可以自己写出能够运行于任何操作系统上的.Net平台(只要你愿意)。如前所述,著名的Mono项目就是这么干的,Mono项目包括三个核心的部分:一个C#语言的编译器,一个CLI和一个类库。在Java的世界中,这项工作是由SUN公司完成的,SUN针对不同的操作系统开发出相应的Java虚拟机以便让一个由Java开发的应用程序运行在不同的操作系统上,但是迄今为止还没听说过微软有这方面打算(为用户提供非Windows系统的.Net平台)。1.1.3程序的执行 ASP.Net并不被编译成为能够直接在计算机上执行的二进制本地代码。与Java类似,它被编译成为中间代码,然后通过.NET Framework的虚拟机被称之为通用语言运行时(CLR)执行。 所有的.Net编程语言都被编译成这种被称为MSIL(Microsoft Intermediate Language )的中间代码。因此虽然最终的程序在表面上仍然与传统意义上的可执行文件都具有“.exe”的后缀名。但是实际上,如果计算机上没有安装.Net Framework,那么这些程序将不能够被执行。在程序执行时,.Net Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行。最终的二进制代码被存储在一个缓冲区中。所以一旦程序使用了相同的代码,那么将会调用缓冲区中的版本。这样如果一个.Net程序第二次被运行,那么这种翻译不需要进行第二次,速度明显加快。1.1.4优势分析 使用者自订控件可以让多个网页当作样板一般套用:例如像网站上的选单, 有许多类似视窗应用程序的控件,可用在网页应用程序的开发工作,让两者之间的转换更直觉。 有许多的控件及类别库让应用程序的开发工作更为快速。 1.1.5开发工具 可以用来开发 ASP.NET 应用程序的软件套件,有下列几种: Visual Studio .NET (2003,2005) ASP.NET Web Matrix Macromedia Dreamweaver MX 2004 Visual Web Developer 2005 Express Edition (for ASP.NET 2.0) 1.1.6目前版本微软官方目前最新版本为 2.0(Visual Studio 2005),前一版本为 ASP.NET 1.1 (Visual Studio 2003)。事实上,在 2005 这个版本,微软官方也将其细分为数个产品线,例如:VS 2005 Team System, VS 2005 Professional Edition, VS 2005 Tools For MS Office, VS 2005 Standard Edition, VS 2005 Express Edition, Visual SourceSafe 2005。1.1.7.Net战略 (1) 软件变服务:Microsoft.NET更是微软的一个网络战略(从软件供应商走向ASP),是微软意图全面占领互联网领域的最强有力的武器。 (2) 基于XML的共同语言:Microsoft .NET是一个平台,是 Microsoft 的 XML Web 服务平台。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。这个平台包含广泛的产品系列,它们都是基于 XML 和 Internet 行业标准构建,提供从开发、管理、使用到体验 XML Web 服务的每一方面。现在,Microsoft 正在五个方面创建 .NET 平台,即工具、服务器、XML Web 服务、客户端和 .NET 体验。 (3) 融合多种设备和平台:.NET为开发人员提供了新的开发平台 (.NET框架) ,新的开发语言(C#) ,新的开发工具 (Visual Studio .NET) ,新的开发方式 (Web Service) ;为普通用户提供了Windows CE、Windows XP、Stinger、Xbox、Tablet PC、.NET My Services、MSN等产品;为企业提供了bCentral。在未来,最终大多数流行的 Microsoft 软件应用程序包括 Office 和 Visual Studio .NET将开始与 XML Web 服务实现交互,并把它们的主要功能作为 XML Web 服务公开,以便其他开发人员可以利用。 (4) 新一代的人机界面:.NET的最终目的就是让用户在任何地方、任何时间,以及利用任何设备(any time, any place and on any device.)都能访问并处理他们所需要的信息、文件和程序。1.2 SQL语句介绍SQL全称是“结构化查询语言(Structured Query Language)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle ,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxporo,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。Structured Query Language包含4个部分:(1)数据查询语言DQL-Data Query Language SELECT(2)据操纵语言DQL-Data Manipulation Language INSERT, UPDATE, DELETE (3)数据定义语言DQL-Data Definition Language CREATE, ALTER, DROP(4)数据控制语言DQL-Data Control Language COMMIT WORK, ROLLBACK WORK 1.2.1 SQL的优点SQL广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、DBA管理员和终端用户受益非浅。1.非过程化语言SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。 SQL不要求用户指定对数据的存放方法。 这种特性使用户更易集中精力于要得到的结果。所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么类型的索引。 2.统一的语言SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,最高级的命令在几天内便可掌握。 SQL为许多任务提供了命令,包括:(1)查询数据(2)在表中插入、修改和删除记录 (3)建立、修改和删除数据对象 (4)控制对数据和数据对象的存取 (5)保证数据库一致性和完整性 以前的数据库管理系统为上述各类操作提供单独的语言,而SQL将全部任务统一在一种语言中。3.是所有关系数据库的公共语言由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS转到另一个。所有用SQL编写的程序都是可以移植的。SQL是PostgreSQL(和大多数其它关系型数据库)用做查询语言的语言。它是可以移植的,并且容易学习使用。但是所有SQL语句都必须由数据库服务器独立地执行。这就意味着客户端应用必须把每条查询发送到数据库服务器,等待它处理这个查询,接收结果,做一些运算,然后给服务器发送另外一条查询。所有这些东西都会产生进程间通讯,并且如果客户端在另外一台机器上甚至还会导致网络开销。如果使用了 PL/pgSQL,那么可以把一块运算和一系列查询在数据库服务器里面组成一个块,这样就拥有了过程语言的力量并且简化SQL的使用,因而节约了大量的时间,因为用不着付出客户端/服务器通讯的过热。通过使用PL/pgSQL,应用可以获得可观的性能提升。 1.2.2 SQL的使用SQL常用命令使用方法:(1)数据记录筛选:sql=select*from数据表where字段名=字段值orderby字段名descsql=select*from数据表where字段名like%字段值%orderby字段名descsql=selecttop10*from数据表where字段名orderby字段名descsql=select*from数据表where字段名in(值1,值2,值 3)sql=select*from数据表where字段名between值1and值2(2)更新数据记录:sql=update数据表set字段名=字段值where条件表达式sql=update数据表set字段1=值1,字段2=值2字段n=值nwhere条件表达式(3)删除数据记录:sql=deletefrom数据表where条件表达式sql=deletefrom数据表(将数据表所有记录删除)(4)添加数据记录:sql=insertinto数据表(字段1,字段2,字段3)values(值1,值2,值3)sql=insertinto目标数据表select*from源数据表(把源数据表的记录添加到目标数据表)(5)数据记录统计函数:AVG(字段名)得出一个表格栏平均值COUNT(*字段名)对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名)取得一个表格栏最大的值MIN(字段名)取得一个表格栏最小的值SUM(字段名)把数据栏的值相加引用以上函数的方法:sql=selectsum(字段名)as别名from数据表where条件表达式setrs=conn.excute(sql)用rs(别名)获取统的计值,其它函数运用同上。(5)数据表的建立和删除:CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)DROPTABLE数据表名称(永久性删除一个数据表)第二章 需求分析要实现一个软件系统,首先应该进行需求分析,这样才能令设计出的软件满足用户的各项功能。下面就对在Excel数据导入系统的设计进行需求分析。2.1 系统需要解决的主要问题首先要对要导入的数据的数据库字段进行初始化,得到数据库中所有字段的基本信息,之所以要这样做是因为数据库中的字段信息都是有规则的,比如数据库中的某个字段最长只能允许有10个字符,那么就不允许你在此列插入大于10个字符的信息,同样你不能把字符串类型的数据插入到Int类型的列中,同时为了安全性考虑,在系统中要用到事务处理,如果用户在数据导入的过程中有一行数据没有插入失败,那么我们是保留已经成功导入的数据呢,还是把数据库回滚到初试状态,删除所有已经导入的数据,这些都是要提前考虑的,同时如果在导入的过程中用户导入的数据量过大,也要考虑到性能问题,所以在这里我是把所有的插入操作拼凑成一条SQL语句一次插入到数据库中,这样就避免了频繁的连接数据库,导致系统性能下降,而且我在导入的过程中利用了AJAX技术为用户提供了一个状态提示层,告知用户系统当前正在执行导入操作,防止在数据量过大,导入时间长,系统一直停留在一个状态让用户不明白系统时候正在运行还是死机了。如果用户在数据导入的过程中发生了错误,这个时候时候应该精确提示用户是Excel文件中的那个单元格的数据存在错误,即告知用户发生错误的坐标位置以方便用户的查找修改。同时记录错误发生的日志,以方便错误查找错误根源。2.2 系统应该具备的基本功能(1)数据库字段初始化:用来初始化要导入到的数据库的所有字段信息,是系统的基础功能,其他操作都建立在此基础上。(2)数据导入:用户可以导入Excel文件到数据库。(3)数据导出:用户可以把数据库中的数据导出到Excel文件中。(4)模板配置:用来设置导入导出规则,对于导入来说就是这只允许用户可以导入Excel文件中的那些列到数据库中,对与导出就是允许导出数据库中的那些字段信息到Excel文件。除了实现上述功能以外,每个系统都应该具有友好、简洁的界面,安全性要高,稳定性要强,这样才能更加满足用户的需求。第三章 系统总体设计3.1基本简介 本系统既可以脱离别的系统独立存在也可以附加到其他系统作为其一功能模块的小系统。主要功能有一下两点:(1) 通过配置导出Sql Server数据库中任意表中的任意数据到Excel文件。(2) 通过配置导入用户提供的Excel文件中的数据到Sql Server数据库中的相关表中。3.2 运行环境与功能实现为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛运行于国际互联网即Internet,也可适用于内部的局域网。其运行要求如下:软件环境:客户端: Windows95/98,Internet Explorer(IE)等,客户机上还要安装微软Office中的Excel组件。 服务器端:Windows NT/Windows2000,Internet Information Server (IIS)4.0及其以上版本,IE等;或者Windows98,Personal Web Server(PWS),IE等。数据库:采用SQL Server 2000,运行于服务器端。硬件环境:服务器 CPU:PIII 500以上 ,内存:256M以上客户机 CPU:P200MMX以上,内存:32M以上 。3.3 功能实现(1)首先要为本系统创建数据库,数据库中包含三个数据表,一个表用来记录需要使用本系统来完成导入导出功能的其他系统的数据库中的所有表的架构信息,在数据库初始化的时候由软件自动获取并填充此表为以后实现导入功能时提供参考。因为在数据库中存储的字段名称可能是英文的,这些信息可能只有开发人员才能看的懂,导入给用户是没有任何意义的,所以我们需要用一个字段用来描述此字段的描述信息。在当用户需要导入数据的时候根据用户提供的表头信息来匹配上述字段从而找到真实的字段名称。另外两张表用来分别记录导入,导入时用到的配置信息,其中导出表的配置信息存储的是Sql语句,导入表存储的是要导入的字段列表,在数据导入的过程中我们需要检测用户提供的Excel文件是否合法,是否存在可以导致数据无法导入的不利因素,例如导入表中记录的规则需要用户导入3列但用户提供的Excel文件只有2列,或者数据库中表的第一列不允许为空,但用户提供的Excel文件的对应列却恰恰为空等等,同时在数据导入的过程中我不是一条一条的导入Excel文件中的数据到数据库,因为这样要不断的打开跟关闭数据库连接效率很低,而且如果在导入的过程中如果有一条数据非法那么先前导入的数据就可能没有任何意义,所以我在导入时是通过先验证每行数据的有效性然后拼成Sql语句到最后一次导入到数据库,同时在数据导入时采用了事务处理,这样发生以外错误时所有操作可以安全回滚,导入过程的简单逻辑关系如下图所示:用户Excel文件 不匹配 错误页面数据导入规则 匹配 导入数据库 图3-1 Excel数据导入系统结构图 (2)本系统有日志记录模块,所有发生的错误都会被记录到一个文本文件中,此文本文件的位置可以在配置文件中进行配置,并且当发生错误时页面会跳转到一个友好的错误信息页面。 (3)系统可以独立与别的系统,也可以附加到别的系统作为一个功能模块,具体情况也只需要在配置文件里面经过配置即可。 (4)数据导入时需要调用Microsoft Office Excel中的com组件来完成导入功能。第四章 详细设计详细设计是整个设计过程中,最重要的步骤之一。下面就分如下几个部分对系统进行详细设计:(1) 数据库中表的设计(2) 页面设计(3) 代码实现系统结构图4.1系统结构图4.1表的设计1.数据库字段信息表结构图4.2数据字段信息表各字段说明:(1) 字段ID,,动增长(2) 表名称(3) 字段名称(4) 字段头(对应到Excel文件的列头,,为数据库中的字段都是英文名称,,用户可能并不知道这些英文名称代表的是什么意思,,以用户的Excel文件中的列头使用的是自己可以明白的中文描述,,如Excel文件中要导入的列中有一列为姓名,,数据库中的对应列的名称为Name,,么当前对应的字段头的名称就应该同样为姓名,,样在导入数据的时候我们就可以把Excel文件中的姓名列对应到数据库中的Name列)(5) 字段数据类型(6) 字段允许的最大长度(7) 字段是否为主键(8) 字段是否为自动增长列(9) 字段是否允许为空(10) 字段的默认值(11) 字段值是否需要从其他表中查询才能获得(因为有时候我们在数据库中存储的数据是其他表中的主键或其他的类似于代号的东西,,个例子在数据库中的sex列中我们用0带表男1代表女,,用户在导入数据到此列的时候Excel文件中对应的此列男就是男,,并不知道这个代号,,以我们在进行数据导入的时候就要提前翻译,,果用户提供的数据是男,,么我们就把0插入到数据库中对应的列中,,户提供的是女我们就把1插入到数据库中的对应列中)(12) 如果字段值需要从其他表中查询时的查询sql语句(13)是否删除实际数据图图4.3导出规则表实际数据图3.导出规则表结构图4.4导出规则表结构各字段说明:(1)规则Id,,动增长,,键(2)规则名称。(3)规则(包含允许导出的子段列表,,个字段用逗号隔开)。(4)是否删除。4.导入规则表结构图4.5导入规则表结构各字段说明:(1) 规则Id,,动增长,,键。 (2)表名称。(3) 规则名称。 (4)规则(包含允许导出的子段列表,,个字段用逗号隔开)。 (5)是否删除。图4.6导入规则表实际数据图4.2 系统设计4.2.1数据初始化图4.7数据初始化界面图图4.8数据初始化界面图数据访问层代码实现:using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using DataHandle.Utility;using Microsoft.ApplicationBlocks.Data;namespace DataHandle.DAL public class HtDataInit private static StringBuilder strBuild; private static StringBuilder strCommonBuild; public HtDataInit() static HtDataInit() strBuild = new StringBuilder(); strCommonBuild = new StringBuilder(); strCommonBuild.Append(select TableName=,,); strCommonBuild.Append(FieldName=,,); strCommonBuild.Append(FieldHead=isnull(g.value,,.name),,); strCommonBuild.Append(FieldDataType=,, ); strCommonBuild.Append(FieldMaxLength=a.length,, ); strCommonBuild.Append(IsPrimaryKey=case when exists(select 1 from sysobjects where xtype=PK and parent_obj=a.id and name in ( ); strCommonBuild.Append(select name from sysindexes where indid in(select indid from sysindexkeys where id = a.id AND colid=a.colid ) then 1 else 0 end,,); strCommonBuild.Append(IsIdentity=case when columnproperty( a.id,,.name,,IsIdentity)=1 then 1 else 0 end,, ); strCommonBuild.Append(IsAllowNull=case when a.isnullable=1 then 1 else 0 end,, ); strCommonBuild.Append(FieldDefaultValue=isnull(e.text,,); strCommonBuild.Append(from syscolumns a ); strCommonBuild.Append(left join systypes b on a.xusertype=b.xusertype ); strCommonBuild.Append(inner join sysobjects d on a.id=d.id and d.xtype=U and dtproperties ); strCommonBuild.Append(left join syscomments e on a.cdefault=e.id ); strCommonBuild.Append(left join sysproperties g on a.id=g.id and a.colid=g.smallidt); strCommonBuild.Append(left join sysproperties f on d.id=f.id and f.smallid=0 ); strCommonBuild.Append(order by a.id,,.colorder ); #region 初始化数据 public static bool InitData() bool returnValue = false; try int count = (int)SqlHelper.ExecuteScalar(GlobalSetting.StaticDBConn,,CommandType.Text,,select count(1) from tField); if (count 0) SqlHelper.ExecuteScalar(GlobalSetting.StaticDBConn,,CommandType.Text,,truncate table tfield truncate table tinputmodel); SqlDataReader myTableReader = SqlHelper.ExecuteReader(GlobalSetting.SystemDBConn,,CommandType.Text,,select name from sysobjects where xtype=u and category!=2 and name!=dtproperties); while (myTableReader.Read() SqlDataReader myColumnsReader = SqlHelper.ExecuteReader(GlobalSetting.SystemDBConn,,CommandType.Text,,select column_name from information_schema.columns where table_name = + myTableReader.GetValue(0).ToString() + ); while (myColumnsReader.Read() strBuild.Append(myColumnsReader.GetValue(0).ToString() + ,,); myColumnsReader.Close(); string columnsName = strBuild.ToString(); SqlHelper.ExecuteNonQuery(GlobalSetting.StaticDBConn,,CommandType.Text,,insert into tInputModel(TableName,,odelName,,odelRule) values( + myTableReader.GetValue(0).ToString() + ,, + myTableReader.GetValue(0).ToString() + 表的所有信息,, + columnsName.Substring(0,,columnsName.LastIndexOf(,,) + ); strBuild.Remove(0,,trBuild.Length); myTableReader.Close(); SqlDataReader myStructReader = SqlHelper.ExecuteReader(GlobalSetting.SystemDBConn,,CommandType.Text,,strCommonBuild.ToString(); while (myStructReader.Read() strBuild.Append(insert into tField(TableName,,ieldName,,ieldHead,,ieldDataType,,ieldMaxLength,,sPrimaryKey,,sIdentity,,sAllowNull,,ieldDefaultValue) values( + myStructReaderTableName.ToString() + ,, + myStructReaderFieldName.ToString() + ,, + myStructReaderFieldHead.ToString() + ,,); strBuild.Append(myStructReaderFieldDataType.ToString() + ,, + myStructReaderFieldMaxLength.ToString() + ,, + myStructReaderIsPrimaryKey.ToString() + ,, + myStructReaderIsIdentity.ToString() + ,,); strBuild.Append(myStructReaderIsAllowNull.ToString() + ,, + myStructReaderFieldDefaultValue.ToString().Replace(,,).Replace(),,).Replace(,,).Replace(null,,) + ); Sql

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论