《XML与数据库》PPT课件.ppt_第1页
《XML与数据库》PPT课件.ppt_第2页
《XML与数据库》PPT课件.ppt_第3页
《XML与数据库》PPT课件.ppt_第4页
《XML与数据库》PPT课件.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第7章XML与数据库,7.1数据存储7.2XML与数据库的转换7.3SQLServer对XML的支持7.4Oracle对XML的支持,7.1数据存储,数据存储:a.结构化的文本文件b.XML文件c.关系数据库d.某种专用的二进制格式。如何使用关系数据库和XML文档来储存信息?如何将这二者结合起来?提供一种可靠的、易于存储的数据存储。数据库和XML有很多共同之处.,数据库和XML存储数据,数据库:关系数据库是以记录和字段来存储数据的,字段与记录之间的顺序和关系并不重要。XML:以文件形式存储,方式类似数据库,但是重要的各个元素之间的顺序和相互关系(父子)。,S120.,XML和数据库,XML和数据库都可用于保存数据,XML与数据库的区别与联系如下:XML侧重于数据交换,数据库更侧重于数据存储XML易于布置,基本不需要额外的管理软件,文档较小;而不像数据库需要配置,附加的管理系统较庞大在要求不高的环境下可以把XML当作数据库来使用;但在大多数情况下,XML就不能胜任。因此出现了XML数据库.,7.1.1关系数据库中信息的存储与查询数据库:层次网状关系面向对象关系数据库:表属性列(字段)行(元组)记录,SQL(结构化查询语言),SQL能做什么?SQL面向数据库执行查询SQL可从数据库取回数据SQL可在数据库中插入新的纪录SQL可更新数据库中的数据SQL可从数据库删除记录SQL可创建新数据库SQL可在数据库中创建新表SQL可在数据库中创建存储过程SQL可在数据库中创建视图SQL可以设置表、存储过程和视图的权限,SQL结构化查询语言,数据查询、数据定义和数据控制。1、查询SELECT音乐名,演唱者,价格,说明FORMmusicsWHERE音乐编号=“CD-002”,2、插入和更新,插入:INSERTINTO(,)VALUES(,)例:INSERTINTOmusicsVALUES(CD-004,美丽新世界,SHE,¥12.50,时间:3分钟),修改:UPDATESET=,=WHERE例:UPDATEmusicsSET价格=价格+1WHERE音乐编号=“CD-002”,在网站中使用SQL,要创建发布数据库中数据的网站,需要以下要素:RDBMS数据库程序(比如MSAccess,SQLServer,MySQL)服务器端脚本语言(比如PHP或ASP)SQLHTML/CSS,7.1.2XML数据中信息的存储与查询,1.数据的查询XML文档的查询和选择必须使用DOM和XPath来进行。例:Example:Query.cs(C#)UsingSystem;UsingSystem.Xml;classClass1staticvoidmain(stringargs),创建XmlDocument对象,并载入XML文档XmlDocumentxdoc=newXmlDocument();xdoc.load(”E:lpfxmlbookmusic.xml”)XmlElementxde=xdoc.DocumentElement;利用XPath选取满足条件的节点XmlNodexe=xde.SelectSingleNode(“child:音乐child:演唱者text()=陈奕迅”);if(xe!=null)/若节点存在,则输出其子节点及属性的信息。.,2.更新和插入使用DOM方法,也可以很方便地实现更新和插入操作。例:UsingSystem;UsingSystem.Xml;namespaceXmlAddclassClass1staticvoidmain(stringargs),创建XmlDocument对象,并载入XML文档XmlDocumentxdoc=newXmlDocument();xdoc.load(”E:lpfxmlbookmusic.xml”)获取文档的根元素XmlElementxde=xdoc.DocumentElement;,创建“音乐”元素,并将其添加到根元素下的子元素列表的末尾XmlElementxe=xdoc.CreatElement(“音乐”);xe.SetAttribute(“音乐编号”,“CD-004”);xde.AppendChild(xe);将“音乐名”、“演唱者”、“价格”和“说明”四个元素添加为“音乐”元素的子元素XmlElementxe_ch1=xdoc.CreatElement(“音乐名”);xe_ch1.InnerText=“美丽新世界”;xe.AppendChild(xe_ch1);,7.2XML与数据库的转换,现在的很多技术都支持XML与数据库的连接,如ASP,DOM,SOAP,XML-RPC等,下面就来看看利用ASP.NET和DOM来实现数据库与XML的信息交换,即如何把数据库中的信息提取出来生成所需的XML文档,以及怎样把一些重要的信息写入到数据库中。,7.2.1数据库到XML文档的信息传送,导入所需的名称空间UsingSystem;UsingSystem.Data;UsingSystem.Data.SqlClient;UsingSystem.Xml;namespaceDBtoXmlclassClass1staticvoidmain(stringargs),创建到数据库的连接,并读取数据,SqlConnectionconBook=newSqlConnection(“server=localhost;database=bookorder;UID=sa;PWD=131”);/连接对象。SqlDataAdapterdadbook=newSqlDataAdapter(“Select*formbooks”,conBook);/Adapter是数据适配器,当实例化时(创建对象时,传递一条sql语句),DataSetdstBook=newDataSet();/建立一个数据集,把数据库中的数据放到数据集DataSet中。dadBook.Fill(dstBook,“Books”);/用Fill方法来填充数据集。DataTabledtblBook=dstBook.Tables“Books”;/DataSet类似数据库的内存对象,可以添加多张表,相当于客户端临时数据库。,创建并添加XML文档的声明,Xmldeclarationxdecl=xdoc.createxmldeclaration(“1.0”,”utf-8”,”yes”);Xdoc.Appendchild(xdecl);,创建并添加文档的根元素books,Xmlelementxe-book=xdoc.CreateElement(“books”);xdoc.AppendChild(xe_books);读取数据库中的每一行信息并加入到XML中for(inti=0;idtblbook.rows.count;i+)添加book的子元素bookIDXmlelementxe-bookID=xdoc.CreateElement(“bookID”);xe-bookID.InnerText=dtblBook.rowsi“bookID”.TOString();xe_book.AppendChild(xe_bookID);,7.2.2XML文档到数据库的信息传送,导入所需的名称空间UsingSystem;UsingSystem.Xml;UsingSystem.Data;UsingSystem.Data.SqlClient;namespaceXmltoDBclassClass1staticvoidmain(stringargs),设置到数据库的连接,,SqlConnectionconBookOrder=newSqlConnection(“server=localhost;database=bookOrder;UID=sa;PWD=131”);DataSetdstBook=newDataSet();SqlDataAdapterdadCustomer=newSqlDataAdapter(“Select*formCustomers”,conBookOrder);dadCustomer.Fill(dstBookOrder,“Customers”);DataTabledtblCustomer=dstBookOrder.Tables“Customers”;,创建Xmldocument对象,并载入XML文档,XMLDocumentxdoc=newXMLDocument();xdoc.load(“e:programmingvcsorder.xml”);Xmlelementxe_orders=xdoc.documentElement;提取文档中各节点的信息,并插入到数据库中for(inti=0;ixe_order.childNodes.count;i+)order节点:xmlNodexn_order=xe_orders.childnodesi;orderID节点:stringstrorderID=xe_orders.childnodes0.InnerText;,XMLDocument:返回对XML文档对象模式的引用。documentElement:返回XML文档的根节点。childNodes:返回节点的子节点目录。item:通过索引访问目录中的个别节点。索引值是从0开始的,所以item(0)返回第一个节点。text:返回节点的内容。,using你的名字空间;(A)还应该在behindcode加入该控件的声明(B)相关知识:,7.3SQLServer对XML的支持,SQLServer2000中的XML支持包括:使用SELECT语句中的FORXML子句检索XML数据简单的HTTPURL请求UpdategramXMLBulkloadOPENXML,注意,如果只是安装了基本的SQLServer2000,这些技术还是不可用的,需要安装XMLforSQLServer2000WebRelease1,该软件可从微软网站上免费下载。另外,这里的很多技术还需要IIS5.0或更高版本的支持方可工作。7.3.1.从SQLServer数据库中提取XML数据1、FORXML从SQLServer数据库中提取XML数据的最基本方式是在SQL查询中使用FORXML子句,告知SQLServer提供一份XML文档来作为响应。FORXML子句的基本语法如下:FORXMLmode,XMLDATA,ELEMENTS,BINARYBASE64,其中mode是使用该子句时需指明的下述三种模式之一:RAW提供一份简单的几乎没有格式化的XML结果AUTO提供一份具有更多格式选项的XML结果EXPLICIT允许对所返回的XML结果进行显示的格式化XMLDATA和ELEMENTS,2.简单的HTTPURL请求SQLServer2000的另一项功能是能够通过http执行查询,所需的工作仅仅是将它们标记到URL的尾部。也可以以类似的方式提供XPath查询。但是在产品级的应用程序中并不提倡这样做,因为该语法允许执行任意的查询,这样如果该数据库暴露在Internet上,将会引发潜在的安全隐患。不过,在设计期间用它来进行测试还是很有用的。,1、实现过程:http:/localhost/northwind?Sql=SELECT+*+FROM+Categories+WHERE+CategoryID=1+FOR+XML+AUTO2、模板3、为模板指定参数,7.3.2.XML数据插入到数据库1、OPENXMLOPENXML的基本语法如下所示:OPENXML(iDocintin,RowPatternnVarcharin,Flagsbytein)WITH(rowsetschemacolpatterns|tablename)iDoc参数指定表示XML文档的内部节点树,该参数包含由sp_xml_preparedocument存储过程所返回的值。RowPattern参数用来定义将要返回的XML文档中的元素,指定OPENXML将要处理的iDoc文档的节点。节点是通过XPath表达式来指定的。Flag参数告诉SQLServer搜索属性和(或)子元素。该值可以是0(默认值,表示属性)、1(属性)或2(元素)。要同时搜索属性和元素,您需要组合这些值来生成3。,WITH子句允许指定希望出现在结果集中的列、它们的数据类型及将源XML的哪个节点映射到该列。WITH子句有三个选项:1)WITHTableName将结果集关联到一个已有的数据表。2)WITH(Namevarchar(20),Root/Name)指定列、数据类型及用于告知处理器源XML节点映射位置的XPath表达式(可选)。3)全部忽略掉该子句。,XMLBulkLoad技术可以用于将大量的XML数据填充到数据库的数据表中。为此,需要使用SQLXMLBulkLoad对象。可以通过VBScript之类的脚本语言来创建该对象:SetBulkLoadObj=CreateObject(“SQLXMLBulkLoad.SQLXMLBulkLoad”)一旦有了该对象,还要为它提供:连接细节,以保证它能够访问待填充的数据库。包含待上载数据的XML。用于说明XML数据和数据库间映射

温馨提示

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

评论

0/150

提交评论