XML文件与ACCESS数据相互转换系统_第1页
XML文件与ACCESS数据相互转换系统_第2页
XML文件与ACCESS数据相互转换系统_第3页
XML文件与ACCESS数据相互转换系统_第4页
XML文件与ACCESS数据相互转换系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、湖南文理学院芙蓉学院本科生毕业论文(设计)题 目: Xml文件与Access数据 相互转换系统设计 学生姓名: 李 爽 学 号: 08090212 专业班级: 电信0802 指导教师: 樊 希 平 完成时间: 2012-05-16 21Xml文件与Access数据相互转换系统设计目 录摘要1引言21 系统开发需求分析21.1 开发工具需求分析21.1.1 Microsoft Visual C+概述31.1.2 C+语言31.2 系统功能需求分析41.2.1 Access数据库的特点41.2.2 XML简介41.3 系统性能需求分析72 系统设计72.1 总体设计72.2 系统层次结构设计82.

2、3 数据库设计83 系统实现的关键技术93.1 ACCESS数据表导入Xml文件93.1.1 打开Access数据库93.1.2 添加按钮响应函数123.1.3 将选中的Access数据库导入XML文件中153.2 将XML文件导入Access数据库174.1 Xml文件导入Access数据表194.2 Access数据表导入Xml文件195结束语20答谢20参考文献21Xml文件与Access数据相互转换系统设计电子信息科学与技术专业学生:李爽指导教师:樊希平摘要:Xml文件与Access数据相互转换系统主要作用是将从后台Access数据库服务器中查询得到的信息导入到Xml文件中,也可将日常

3、工作中的各种Xml文件中的数据导入到Access数据库中。系统制作过程中是基于Windows XP平台上用visual  c+来实现的。它包括对Access数据库的动态连接、打开,转为Xml文件类型;以及打开Xml文件,读取数据并添加到Access数据库;同时还提供提供数据录入的功能。因此,该系统很好的解决了Xml文件与Access数据相互转换中因数据存储格式不一样相互之间转换起来带来的繁锁问题。关键词: Access数据库,Xml 文件,Visual C+ 6.0XML Files and Access Data Conversion SystemElectronics and I

4、nformation Science and Technology Candidate: Li ShuangAdvisor: Fan XipingAbstract: Xml file with Access data conversion between the main roles of the system is from the back-end Access database server query information into Xml file, a variety of daily work in an Xml file the data into an Access dat

5、abase.Improve the actual work efficiency. System production process is based on Windows XP platform with visual c + +. It includes the dynamics of the Access database connections, open, into an Xml file type; and open the Xml file, read the data and added to the Access database; also provides data e

6、ntry functions. Therefore, the system is a good solution to the cumbersome problem of Xml files and Access data conversion, data storage format conversion between each other up.Keywords: Access database, Excel data table, the Visual C + + 6.0引言随着计算机的不断普及,计算机的使用越来越广泛, 在管理信息系统的开发中,我们经常需要使用数据库上报数据,可这些数

7、据库之间由于存储格式不一样, 相互之间转换起来也非常的繁锁。因此我们需要探讨出一个数据库与Xml文件的相互转换系统,充分使用Xml文件和数据库两者各自处理数据的优势,快速方便的进行数据转换,提高工作效率,轻松实现数据的快速下载和上报。而数据库表中人们目前常用的是ACCESS2003。为实现上述目标,本课题采用目前开发数据库应用程序非常优秀的开发工具VC+来实现Xml文件与Access数据相互转换系统,能给企业工作人员带来极大地操作方便,大大地提高了数据转换的效率。从目前市场上比较流行的数据库管理软件来看, Visual C+ 6.0和Access 2003的结合物使在实际应用中为较成功的一种解

8、决方案。前者为用户提供了Windows所一贯坚持的非常友好、操作简单的用户界面、完善而强大的数据库操作功能和简洁明了的数据库接口,并且对于Microsoft Visual C+ 6.0来说,对数量较少的表(table)和其间关系(relation)进行比较简单的操作正是其擅长的功能,无论是查询统计或利用数学公式进行趋势预测,都能顺利完成。后者则可对数据库实施操作、维护和权限识别功能。VC中应用Xml,在Generic Class读取Xml的类型,为各个单独的Xml对象建立VC+驱动程序类,合并到同一文件中即可应用。设计方案中最重要的是对数据库的设计,本课题采用的数据库设计实际上是在Access

9、数据库中建立一个表格,然后利用VC程序将其转换到Xml文件中,Xml文件中的数据能存入Access数据库中,只要建立一一对应的关系就可以实行。考虑到数据库要创建数据表转入Xml文件中,Xml又将存入数据库的情况 ,实现此两个模块只需在Visual C+ 6.0界面做一个对话框,两个按钮并且对其编程。模块中需要有对文件的查找和导出功能。1 系统开发需求分析1.1 开发工具需求分析Xml文件与Access数据相互转换系统是能将Xml文件中的工作表数据自动存入Access数据库的相应数据表中;能将Access数据库相应数据表的数据自动生成Xml工作表;提供数据录入功能。这就需要选择一款实现数据库的开

10、发和管理的软件,从目前市场上主流软件来看,对于比较简单的中小型数据库,Microsoft Visual C+ 6.0在实际应用中为较成功的一种解决方案。而Microsoft Visual C+ 6.编程中则采用C+语言。VC+是现在较为通用的开发工具之一,它提供了相当齐备的类库和友好的编程界面。虽然Visual C+数据库的开发较Delphi,VB以及PowerBuilder复杂,但VC+从4.0版本开始对数据库的开发提供了比较好的环境支持。随着版本的升级,VC+对数据库的访问技术更加成熟,功能也更加强大。借助予VC+可以轻松地开发出功能强大、速度快、应用广并且占用资源少的应用程序。在信息管理

11、系统的开发中,一般都包括数据的添加、修改、删除等操作。1.1.1 Microsoft Visual C+概述Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台1。Visual C+6.0不仅是一个C+编译器,而且

12、是一个基于Windows操作系统的可视化集成开发环境(integrated developmentenvironment,IDE)。Visual C+6.0有许多组件,包括编辑器、调试器、程序向导AppWizard、类向导Class Wizard等开发工具。1.1.2 C+语言C+语言是在C语言的基础是扩展而成的.所以两种语言的基本语法和语义是相同。但C+中加入了面向对程序设计(OOP)的特征。下面刻画OOP语言的三个主要性质:(1)封装性:把一个数据结构同操作的函数(行为或方法)组合在一起。封装性是借助于一种新的结构和数据类型机制类来实现的。 (2)继承性:建立一个新的派生类,它从一个或多个

13、先前定义的基类中继承函数和数据,而且可能重新定义或加进新的数据行为,这样就建立了类的层次。 (3)多态性:给行为取一个名字或符号,它共享一个类的层次,在这个层次中的每个类都以适合自己的方式实现这个行为。为了充分发挥系统的性能,本系统在实现上采用C+语言2。1.2 系统功能需求分析Xml文件与Access数据相互转换系统是基于充分利用Xml文件与Access数据库存取数据两者各自的优势,能高效快速进行两者数据间的转换。从而达到操作方便,提高工作效率的目的。1.2.1 Access数据库的特点Microsoft Access是一种关系式数据库,关系式数据库由一系列表组成,表又由一系列行和列组成,每

14、一行是一个记录,每一列是一个字段,每个字段有一个字段名,字段名在一个表中不能重复。其主要特点如下:(1) 完善地管理数据库对象,具有强大的数据组织、用户管理、安全检查等功能。(2)可以方便地生成各种数据对象,利用存储的数据建立窗体和报表,可视性好。(3)集成环境、处理多种数据信息。Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。(4)能够利用Web检索和发布数据,实现与Internet的连接。Access主要适用于中小型应用系统,或作为客户

15、机/服务器系统中的客户端数据库。1.2.2 XML简介XML(Xtensible Markup Language,即可扩展标记语言)的发展起源于1996年。当时,出版界巨头和Web业内人士经过共同讨论,提出了创建SGML(Standard Generalized Markup Language,即标准通用标识语言)子集的建议。该子集专用于Web,具有可扩展(或可扩充)性,并且能利用结构化标记语言的所有高级功能,但摒弃了SGML的复杂性。XML规范的第一份草稿于1996年11月发布后不久,1997年1月首个XML解析器就面世了。随后,便出现了XML的应用以及新的规范和解析器。(1)HTMLHTM

16、L(Hypertext Markup Language)语言是大家所熟悉的开发网页的一种标记语言,但它不是一种编程语言,它的主要标记是针对文档内容本身结构的描述,因机器本身是不能够解 析它的内容的。XML语言是SGML语言的子集,它保留了SGML主要的使用功能,同时大大减小了SGML的复杂性。它不仅能表示文档的内容,而且可以表 示文档的结构,这样在能够被人类理解的同时,也能够被机器所理解。虽然HTML是SGML的一个应用,XML是SGML的一个子集,但是XML绝不是在 HTML上添加某些元素而形成的,它们之间是有很大区别的。最大的区别就是XML允许使用者为某种特殊目的而定义自已的元素。除此之外

17、,另一个最主要的区别就是XML致力解决的问题,正是在使用HTML时所遇到的一些特殊问题。XML要求遵循一定的严格标准,其分析程序比HTML浏览器对语法和结构的要求更加严格。XML文档每次分析的结果都一致,而HTML在不同的浏览器中可能会作出不同的分析和显示。同时,XML标准是对数据的处理应用,而不只是针对Web页的,它还可涉及到数据库电子商务系统,以及任何显示系统的高级应用。开发者可根据特定的工业需求,利用XML创建自定义的数据结构。这些数据结构和数据库可以在许多设备上查看,而不需要使用自定义的接口在不同的显示设备上查看相同的数据。XML主要有三个要素:文档类型声明(DTD:Document

18、Type Declaration)或(XML Schema(XML大纲)、可扩展样式语言(XSL:eXtensible Stylesheet Language)和可扩展链接语言(XLink:eXtensible Link Language)。DTD和XML大纲规定了XML文件的逻辑结构,定义了XML文件中的元素、元素的属性以及元素与元素属性之间的关系; Namespace(名域)实现了统一的XML文档数据表示以及数据的相互集成;XSL是用于规定XML文档呈现样式的语言,它使得数据与其表现形式相互独立,比如XSL能使Web浏览器改变文档的表示法,如数据显示顺序的变化,不需要再与服务器进行通讯。通

19、过改变样式表,同一个文档可以显示得更大,或者经过折叠只显示外面的一层,或者可以变为打印的格式。而XLink 将进一步扩展目前Web上已有的简单链接。 (2)文档对象模型(DOM)DOM是Document Object Model(文档对象模型)的简称,是对Web文档进行应用开发、编程的应用程序接口(API)。作为W3C公布的一种跨平台、与语言无关的接口规范,DOM提供了在不同环境和应用中的标准程序接口,可以用任何语言实现。DOM采用对象模型和一系列的接口来描述XML文档的内容和结构,即利用对象把文档模型化。这种对象模型实现的基本功能包括:· 描述文档表示和操作的接口; ·

20、接口的行为和属性;· 接口之间的关系以及操作。DOM可对结构化的XML文档进行解析,文档中的指令、元素、实体、属性等所有内容个体都用对象模型表示,整个文档被看成是一个有结构的信息树,而不是简单的文本流,生成的对象模型就是树的节点,对象同时包含了方法和属性。因此,对文档的所有操作都是在对象树上的进行。在DOM中,树中的一切都是对象,不管是根节点还是实体的属性。在DOM中主要有以下三个对象:· XML文档对象 XML文档既是一种对象,同时又代表整个XML文档。它由根元素和子元素组成。· XML节点对象 XML节点对象代表的是XML文档内部的节点,如元素、注释、名字空间

21、等。· XML节点列表 XML文档模块列表代表了节点的集合。利用DOM,开发人员可以动态地创建XML文档,遍历结构,添加、修改、删除内容等。其面向对象的特性,使人们在处理XML解析相关的事务时节省大量的精力,是一种符合代码重用思想的强有力编程工具。(3) MSXML从理论上说,根据XML的格式定义,我们可以自己编写一个XML的语法分析器,但实际上微软已经给我们提供了一个XML语法解析器,即一个叫做MSXML.DLL的动态链接库,实际上它是一个COM(Component Object Model)对象库,里面封装了进行XML解析时所需要的所有对象。因为COM是一种以二进制格式出现的和语

22、言无关的可重用对象,所以你可以用任何语言(比如VB,VC,DELPHI,C+ Builder甚至是剧本语言等等)对它进行调用,在你的应用中实现对XML文档的解析。MSXML.DLL所包括的主要COM接口有:a. DOMDocumentDOMDocument对象是XML DOM的基础,你可以利用它所暴露的属性和方法来浏览、查询和修改XML文档的内容和结构。DOMDocument表示了树的顶层节点,它实现了DOM文档的所有的基本方法,并且提供了额外的成员函数来支持XSL和XSLT。它创建了一个文档对象,所有其他的对象都可以从这个文档对象中得到和创建。b. IXMLDOMNodeIXMLDOMNod

23、e是文档对象模型(DOM)中的基本对象,元素、属性、注释、过程指令和其他的文档组件都可以认为是IXMLDOMNode。事实上,DOMDocument对象本身也是一个IXMLDOMNode对象。c. IXMLDOMNodeListIXMLDOMNodeList实际上是一个节点(Node)对象的集合,节点的增加、删除和变化都可以在集合中立刻反映出来,可以通过"for.next"结构来遍历所有的节点。d. XMLDOMParseErrorIXMLDOMParseError接口用来返回在解析过程中所出现的详细的信息,包括错误号、行号、字符位置和文本描述。在具体应用时可以用DOMDo

24、cument的Load方法来装载XML文档,用IXMLDOMNode 的selectNodes(查询的结果有多个,得到存放搜索结果的链表)或selectSingleNode(查询的结果有一个,在有多个的情况下返回找 到的第一个节点)方法进行查询,用createNode和appendChild方法来创建节点和追加节点,用IXMLDOMElement的 setAttribute和getAttribute方法来设置和获得节点的属性3。1.3 系统性能需求分析需求分析是在于要弄清用户对开发的数据库应用系统的确切要求。本系统需要完成以下性能:(1) 操作应方便、灵活。(2) 系统应有较高的稳定性、安全性

25、、容错性。(3) 在结构上应具有很好的可扩展性,便于将来的功能扩展和维护。(4) 转换处理的准确性。(5) 技术先进:系统设计和开发采最新的开发技术和开发工具。使系统能够无论在功能设计上,还是在技术上,都处于同行业的领先地位。2系统设计2.1总体设计Xml文件与Access数据相互转换系统,实现时应可以支持同个数据表到同一个Xml中,支持数据表中满足条件的数据转入Xml中,即要求打开Xml文件,读取数据并添加到Access数据库;同理Xml放入Access数据库也一样,它包括对Access数据库的动态连接、打开,转为Xml文件类型;同时还提供提供数据录入的功能。VC访问数据库,利用基于COM的

26、ADO提供的智能接口(如数据库连接接口ConnectonPtr,记录集接口RecordSet等),能高效、方便地实现。2.2系统层次结构设计在VC中创建Access数据表,连接变量,从表中提取数据,利用Xml文档及节点对象将数据导出至Xml文件,如图1。VC环境里利用数据库连接变量打开数据表文件,提取数据 连接到VC环境下 Access数据库中数据表文件利用Xml对象操作数据导出Xml数据表文件图1 系统结构框图2.3数据库设计良好的数据库设计是获得较好数据库应用性能的基础。系统数据库采用Access关系数据库,能有效的实现用户的需求,而且能为后期的扩展留下广阔的空间。本系统数据库表的设计过程

27、一般可分为四步: 需求分析、概设计、逻辑设计和物理设计。通常从概念模式直接导出关系模会带来数据冗余, 这就需要我们通过关系的规范化处理逐步消化不合适的关系依赖部分。数据表规范化以后列数比原来减少, 不需要多次存储同一字段, 从而减少了冗余数据, 减少数据库总的数据量, 节省了数据存储空间。事实上, 虽然完全规范化处的最终结果可以把表分成相关列最少的表, 实现最小存储空间, 但是, 在实际处理过程中, 通常还是需要保留适当的数据冗余, 以减小查询操作时进行的表连接操作, 于是在数据库表的优化过程中, 还需要通过一些反规范化处理适度增加数据冗余来提升查询速度。反规范化处理是一种以存储空间换取处理时

28、间的方法, 它也会造成数据更新速度的减慢, 有时甚至会影响数据概念的独立性。因此对数据库进行反规范化时, 我们需要通过仔细分析具体应用的访问要求, 把握适当的反规范化程度, 来保证数据的完整性。本系统中设计的数据库和数据表主要是起到测试的作用,故选择一般性的数据库表格和Xml数据即可进行调试4。3 系统实现的关键技术建立一个对话框,在界面中加入8个按钮,IDC_BUTTON_ADD、IDC_BUTTON_DEL、IDC_BUTTON_MOD、IDC_BUTTON_SAVE、IDC_BUTTON_CANCEL、IDC_BUTTON_OUTPUT、IDC_BUTTON_OUTPUT2、IDC_BU

29、TTON_INPUT,往个按钮中加入响应函数,使其能实现对应功能。基本界面如图2所示。图2基本界面3.1 ACCESS数据表导入Xml文件 Access数据库管理系统作为Microsoft Office系列软件成员之一,以其强大的数据库管理功能,成为许多中小型信息管理系统的首选开发工具,应用十分广泛。但使用Access要对数据库知识有一定的理解,操作相对复杂,函数也只能在VC 语言中使用,因此一般用户在处理Access数据库文件时,往往不知道如何查找或统计出想要的结果。如果能将一个Access数据库中的数据转化为Xml文档,将会大大提高处理效率。ACCESS数据转换成Xml基于上述目的提出以下

30、的设计思想:设计Access数据库和表,能够提供增加、录入以及保存数据的功能,从数据库表中获取数据,通过写入程序将数据导入制定的Xml文档中。3.1.1打开Access数据库系统采用了ADO操作Access数据库,ADO操作数据库的基本流程为:依据功能要求建立数据库和数据表;引入ADO库定义文件;初始化COM库;用Connection对象连接数据库;通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理;关闭数据库的连接并释放对象5。一、建立数据库和数据表在ACCESS中建立一个数据库,添加一个表,表名为StudentInfo。在S

31、tudentInfo表中有三个字段,分别为student_id.student_name和nscore。建立一个基于对话框的工程,启动VC6.0,选择Files/news命令,打开New对话框。利用AppWizard新建基于对话框的工程,工程名为db0056。二、引入ADO库定义文件使用ADO库,要先在头文件中用#Import引用ADO库文件,使编译器能正确编译。打开stafx.h文件并添如下代码:#import "c:Program FilesCommon FilesSystemADOmsado15.dll" no_namespace rename("EOF&q

32、uot;,"adoEOF")#include <atlbase.h>#import <msxml6.dll>using namespace MSXML2;#pragma comment(lib, "msxml2.lib")三、初始化COM库要使用ADO,必须初始化COM环境。找到函数InitInstance(),在此函数中增加以下代码:BOOL CDb005App:InitInstance()AfxEnableControlContainer();#ifdef _AFXDLLEnable3dControls();#elseEnab

33、le3dControlsStatic();#endif:CoInitialize(NULL);打开DB005DLG.文件,在文件中加入_RecordsetPtr._connectionPtr和int变量,代码如下:protected:HICON m_hIcon;int m_nOperate; /* 0表示无操作,1表示添加,2代表修改 */_RecordsetPtr m_pRecordset;_ConnectionPtr m_pConnection;CComPtr<IXMLDOMDocument> spXMLDocument;CComPtr<IXMLDOMNode> s

34、pXMLRootNode;void EnableInput(BOOL bEnable);void FreshList();四、为各控件建立属性设置打开resourceview选项卡,展开dialog,双击IDD_DB005_DIALOG选项,打开主对话框控件资源界面。在主对话框窗口中,添加静态文本控件,文本框控件,按钮控件和ListCtrl控件(暂时为建立数据库设立,也许会再添加)。各控件属性设置如下表1,表2,表3。表1 控件变量设置控件ID类型变量名IDC_EDIT_ IDEDITTEXTm_strldIDC_EDIT_NAMEEDITTEXTm_strNameIDC_EDIT_SCORE

35、EDITTEXTm_nScoreIDC_LIST_STUDENTCLisCtrlm_Studentlist表2控件表控件ID类型标题IDC_BUTTON_ADDCButton增加记录IDC_BUTTON_CANCELCButton取消操作IDC_BUTTON_DELCButton删除记录IDC_BUTTON_INPUTCButton从XML文件导入IDC_BUTTON_MODCButton修改记录IDC_BUTTON_OUTPUTCButton从列表控件导出到XML文件IDC_BUTTON_OUTPUT2CButton从数据库表导出到XML文件IDC_BUTTON_SAVECButton保存数

36、据IDC_EDIT_IDEDITTEXTIDC_EDIT_NAMEEDITTEXTIDC_EDIT_SCOREEDITTEXTIDC_LIST_STUDENTCLisCtrl表3 控件消息映射表控件ID消息映射函数IDC_BUTTON_ADDBN_CLICKEDOnButtonAddIDC_BUTTON_CANCELBN_CLICKEDOnButtonCancelIDC_BUTTON_DELBN_CLICKEDOnButtonDELIDC_BUTTON_INPUTBN_CLICKEDOnButtonINPUTIDC_BUTTON_MODBN_CLICKEDOnButtonMODIDC_BUTT

37、ON_OUTPUTBN_CLICKEDOnButtonOUTPUTIDC_BUTTON_OUTPUT2BN_CLICKEDOnButtonOUTPUT2IDC_BUTTON_SAVEBN_CLICKEDOnButtonSAVE3.1.2添加按钮响应函数(1) 在DB005Dlg.cpp工程下,添加函数。初始化_connectionptr和_recordsrtptr指针,代码如下:CDialog:OnInitDialog();ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMe

38、nu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE);m_Student

39、List.SetExtendedStyle(m_StudentList.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_StudentList.InsertColumn(0, _T("学生学号"), LVCFMT_LEFT, 100);m_StudentList.InsertColumn(1, _T("学生姓名"), LVCFMT_LEFT, 120);m_StudentList.InsertColumn(2, _T("分数"), LVCFMT_LEFT, 100

40、);EnableInput(FALSE);m_nOperate = 0;_bstr_t strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source=student.mdb");trym_pConnection.CreateInstance(_uuidof(Connection);m_pConnection->Open(strcnn, _T(""),adModeUnknown);_T(""),m_pRecordset.CreateInstance(_uuidof(Recordse

41、t);catch(_com_error e)AfxMessageBox(_T("建立数据库失败!"), MB_OK|MB_ICONSTOP);FreshList();(2)为新增的按钮分别添加按钮响应函数。分别在IDC_BUTTON_ADD、IDC_BUTTON_DEL、IDC_BUTTON_MOD, IDC_BUTTON_SAVE,IDC_BUTTON_CANCEL ,ListCTrl控件中添加代码7。a.增加记录IDC_BUTTON_ADD按钮,实现在数据表中增加数据,代码如下:void CDb005Dlg:OnButtonadd()m_nOperate = 1;Ena

42、bleInput(TRUE);b.删除记录IDC_BUTTON_DEL按钮,实现删除数据表中的数据,代码如下:void CDb005Dlg:OnButtonDEL()UpdateData(TRUE);if(m_strId.IsEmpty()AfxMessageBox(_T("学生学号不能为空.");return;CString strsql;strsql.Format(_T("DELETE from StudentInfo where student_id = '%s'"), m_strId);tryM_pConnection->E

43、xecute(_bstr_t(strsql), 0, adCmdText);catch(_com_error e)AfxMessageBox(_T("删除记录失败!");AfxMessageBox(_T("删除记录成功!");FreshList();c.修改记录IDC_BUTTON_MOD按钮,实现修改数据表中的数据,但是不能修改学号,代码如下:void CDb005Dlg:OnButtonMOD()m_nOperate = 2;EnableInput(TRUE);CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_ID

44、);pEdit->SetReadOnly(TRUE);d.保存记录IDC_BUTTON_SAVE按钮,实现保存数据表中的数据,代码如下:void CDb005Dlg:OnButtonSAVE()if(m_nOperate = 1) UpdateData(TRUE);if(m_strId.IsEmpty()AfxMessageBox(_T("学生学号不能为空.");return;if(m_strName.IsEmpty()AfxMessageBox(_T("学生姓名不能为空.");return;CString strSql;strSql.Format

45、(_T("Insert into StudentInfo values('%s','%s',%d)"), m_strId, m_strName, m_nScore);trym_pConnection->Execute(_bstr_t(strSql), 0, adCmdText);catch(_com_error e)AfxMessageBox(_T("增加记录失败!");AfxMessageBox(_T("增加记录成功!");FreshList();else if(m_nOperate = 2)

46、UpdateData(TRUE);if(m_strId.IsEmpty()AfxMessageBox(_T("学生学号不能为空.");return;if(m_strName.IsEmpty()AfxMessageBox(_T("学生姓名不能为空.");return;CString strSql;strSql.Format(_T("update StudentInfo set student_name = '%s', score = %d where student_id='%s'"), m_strNam

47、e, m_nScore, m_strId);trym_pConnection->Execute(_bstr_t(strSql), 0, adCmdText);catch(_com_error e)AfxMessageBox(_T("修改记录失败!");AfxMessageBox(_T("修改记录成功!");FreshList();m_nOperate = 0;EnableInput(FALSE);e.取消操作IDC_BUTTON_CANCEL按钮,实现取消操作的功能代码如下:void CDb005Dlg:OnButtonCancel()m_nOpe

48、rate = 0;EnableInput(FALSE);f.ListCTrl控件,把对应的学号、姓名、成绩在数据表中显示出来,代码如下:void CDb005Dlg:FreshList()trym_pRecordset->Open(_T("select * from StudentInfo"), (IDispatch*)m_pConnection, adOpenDynamic,adLockOptimistic,adCmdText);int nItem;m_StudentList.DeleteAllItems();while(!m_pRecordset->adoE

49、OF)nItem = m_StudentList.GetItemCount();m_StudentList.InsertItem(nItem, (LPCTSTR)_bstr_t(m_pRecordset->GetCollect("student_id");m_StudentList.SetItemText(nItem, 1, (LPCTSTR)_bstr_t(m_pRecordset->GetCollect("student_name");m_StudentList.SetItemText(nItem, 2, (LPCTSTR)_bstr_t

50、(m_pRecordset->GetCollect("score");m_pRecordset->MoveNext();m_pRecordset->Close();catch(_com_error e)AfxMessageBox(_T("刷新列表失败!");3.1.3 将选中的Access数据库导入XML文件中(1)定义XML文档,根节点,节点以及元素节点指针。(2)创建XML文档实例,创建元素节点(3)打开记录集,从数据库表"StudentInfo"中获取数据,再分别从学号、姓名、成绩字段获取数据,创建元素节点及子

51、节点,并设置其属性,最后将其保存到指定文件,释放文档对象,实现Access数据库到XML文件的转换8。从列表导出到XML文件,代码如下:void CDb005Dlg:OnButtonOutput() CComPtr<IXMLDOMDocument> pDoc;CComPtr<IXMLDOMNode> xmlRoot;CComQIPtr<IXMLDOMNode> pNode;CComQIPtr<IXMLDOMElement> pChildNode;int nItem;CString s_ID, s_Name, s_Score;int nCount

52、= m_StudentList.GetItemCount();HRESULT hr = pDoc.CoCreateInstance(_uuidof(DOMDocument);xmlRoot = pDoc->createElement(_bstr_t)"Student");pDoc->appendChild(xmlRoot);for( nItem = 0; nItem < nCount; nItem+ )s_ID= m_StudentList.GetItemText(nItem, 0);s_Name= m_StudentList.GetItemText(nI

53、tem, 1);s_Score= m_StudentList.GetItemText(nItem, 2);pChildNode = pDoc->createElement(_bstr_t)"学号");pChildNode->setAttribute("id",(const char *)s_ID);xmlRoot->appendChild(pChildNode);pNode = pDoc->createElement(_bstr_t)"姓名");pNode->Puttext(_bstr_t)(const

54、char *)s_Name);pChildNode->appendChild(pNode);pNode=pDoc->createElement("成绩");pNode->Puttext(_bstr_t)(const char *)s_Score);pChildNode->appendChild(pNode);pDoc->save("myxml_List.xml"); 从数据库表导出到XML文件,实现其功能代码:void CDb005Dlg:OnButtonOutput2() CComPtr<IXMLDOMDocumen

55、t> pDoc;CComPtr<IXMLDOMNode> xmlRoot;CComQIPtr<IXMLDOMNode> pNode;CComQIPtr<IXMLDOMElement> pChildNode;CString s_ID, s_Name, s_Score;HRESULT hr=pDoc.CoCreateInstance(_uuidof(DOMDocument);xmlRoot = pDoc->createElement(_bstr_t)"Student");pDoc->appendChild(xmlRoot);

56、m_pRecordset->Open(_T("select * from StudentInfo"), (IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);while(!m_pRecordset->adoEOF)s_ID = (LPCTSTR)_bstr_t(m_pRecordset->GetCollect("student_id");s_Name = (LPCTSTR)_bstr_t(m_pRecordset->GetCollect("

57、student_name");s_Score = (LPCTSTR)_bstr_t(m_pRecordset->GetCollect("score");pChildNode = pDoc->createElement(_bstr_t)"学号");pChildNode->setAttribute("id",(const char *)s_ID);xmlRoot->appendChild(pChildNode);pNode = pDoc->createElement(_bstr_t)"姓名");pNode->Puttext(_bstr_t)(const char *)s_Name);pChildNode->appendChild(pNode);pNode=pDoc->createElement("成绩");pNode->Puttext(_bstr_t)(const char *)s_Score);pChildNode->appendCh

温馨提示

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

最新文档

评论

0/150

提交评论