基于NET的XML与SQLServer数据交换方法

文档序号:9727357阅读:294来源:国知局
基于NET的XML与SQLServer数据交换方法
【技术领域】
[0001 ] 基于AD0NET的XML与SQLServer数据交换方法主要涉及计算机数据库领域。
【背景技术】
[0002]XML是eXtenMble MarkupLanguage的缩写,其全称为“可扩展标记语言”,它定义了一种文件格式,一种保存数据的方法,其自描述性非常适用于异构数据库系统之间的数据交换,而且这种交换不以预先规定的数据结构定义为前提,具备很强的开放性。近年来,XML技术已经广泛应用于电子商务、电子政务、网上教学等众多领域。
[0003]SQL Server数据库系统是当今主流的数据库系统之一,在SQL Server 2000中,引入了对XML的直接支持,在安装SQL数据库的时候,就已经安装了 MSXML语法分析器(Msxml2.dll),用来分析XML文档,用户通过浏览器以U R L访问SQL Server 2000,并将查询结果以XML格式返回浏览器中显示出来,也可以通过0PENXML语句将XML格式的数据放入 SQL Server 2000 中。
[0004]

【发明内容】

通过国家专利检索没有发现关于此系统方面的申请资料。
[0005]此方法是通过通过一个分层编程接口或实用AD0.NET有关的A P I访问并更新同一数据片断。基本上,可以将一个DataSet对象转换为XML D0M对象并将XML D0M子树视为合并了 DataSet对象表中的一些表的集合。
[0006]SQL Server 2000是一个功能强大的关系型数据库管理系统,它新增了许多支持XM L的新特性,将S Q LServer 2000关系数据库的查询结果显示成XML文档是通过.NETDataProvider 直接使用 SqlCom.mand 的 ExecuteXmlReader 方法创建一个 XmlReader,在普通SELE CT语句中加上FOR XML子句来完成的,查询结果存储为XML文档,而不是通常意义上的结果集。
[0007]在使用FOR XML子句的同时可以指定XML的MODE (RAW、AUTO、EXPLICIT)以及XML-DATA的模式(Schema),通过指定3种XML样式RAW、AUTO、EXPLICIT之一,就可以返回具有一定样式信息的数据。但是FOR XML也有它的局限性:〈a>在子查询中不能使用FORXML ;<b>F0R XML不可以用于计算列。
[0008]以下我们可以使用SQL Server2000中新提供的FOR XML子句检索SQL数据并生成XML文档:
〈DRAW模式:获得查询结果并将结果集内的各行转换为xML元素,用一般标识符〈row〉作为元素标记。
[0009]SELECT C.CustomerlD, 0.0rderlD, 0.0rderDate FROM Customers C.0rders
0WHERE C.CustomerID=0.CustomerlD ORDER BY C.CustomerlD FOR XML RAW
下面是部分结果:
〈row CustomerID=”ALFKI’1 0rderID=” 10643”0rderDate=” 1 997—08—25T00:00:
001V>〈row CustomerID=”AR0UT”0rderID=’ 1 10355”0rderDate=”l 996-11-15T00:00:00,,/>
<2>AUT0模式:以简单的嵌套XML树返回查询结果。在FROM子句内,每个在SELECT子句中至少有一列被列出的表都表示为一个XML元素,SELE CT子句中列出的列映射到适当的元素特性。
[0010]SELECT C.CustomerlD,0.0rderlD, 0.0rderDate FROM Customers C.0rders0 WHERE C.CustomerID=0.CustomerlD ORDER BY C.CustomerlD FOR XML AUTO
下面是部分结果:
<C CustomerID=l1ALFKIv >
<0 0rderID=” 10643”
0rderDate=”l 997-08-25T00:00 001’ />
<3>EXPLICIT模式:这是最为复杂也是功能最为强大的一种模式。指定显式定义所得到的XML树的形状,从而提供对返回结构的全面控制。各个列(字段)都可以独立的映射为属性或手元素,使用此种模式,要求以一种特定的方式编写查询,以便显示指定有关期望的嵌套的附加信息。
[0011]XML文档保存到关系数据库裹中;XML的主要用途之一就是作数据交换,将不同格式的数据转换成XML文档后,再转换成其他的格式进行存储或处理,因此可以将XML文档转换成SQL Server 2000的格式,把XML文档保存在SQL Server 2000的表中。
[0012]在SQL Server 2000中,0PENXML语句提供了在关系数据库表中存储XML文档的功能。SQL Server 2⑴0支持三种在数据库中表示X M L的基本方法:
0PENXML、XML批量加载以及Updategram。0PENXML是一个T一SQL函数,它负责插入用XML文档表示的数据,0PENXML解析XML文件的内容并把它表示为行集,这样,行集中的记录就可以存储在数据库表中。XML批量加载(XML BulkLoad)是一个COM组件,SQL Server2000可以用它读取XML文件中的数据,并根据XDR或XSD模式将数据复制到数据库的表和列中。和0PENXML不同,XML批量加载是经过优化可用于处理大量数据的。Updategram是一个XML文件,它包含必须输入到一个或多个数据库表中的更改信息。除了所作的更改之外,Updategram还包含可选的映射信息,以更好地关联XML源中的元素和数据库中的列。
[0013]下面以一个例子来说明如何用0PENXML取出XML文档内容,并以查询数据表的方式显示其内容:
DE CLAREihdoc int
DECLAREidec varchar (4000)--建立一个记录人员信息的XML文档
SET@dec= ‘〈users〉
<user>
<userlD>l< / userlD>
<userName> 张三 < / userName>
</ user>
<user>
<userlD>2< / u §erlD>
<userName> 李四〈/ userName>
</ userX / users〉’ 一一使用0PENXML生成人员数据行集EXE C sp—xml—preparedocumentOhdoc OUTPUT, ?dec一一用XML文档的人员数据行集作为SELE CT语句查询的表格SELECT * FROM OPENXML(@hdoc,; / users / user,)ff I T H(人员编号i n t /userlD’,人员姓名 varchar (30)
/ userName’ )
一一处理完毕,释放内存空间EXEC sp_xml—removedocumentOhdoc
输出结果如下:
人员编号人员姓名1张三2李四。
【主权项】
1.基于NET的XML与SQLServer数据交换方法通过一个分层编程接口或实用AD0.NET有关的A P I访问并更新同一数据片断。2.根据权利要求1则将SQ LServer 2000关系数据库的查询结果显示成XML文档是通过.NET DataProvider 直接使用 SqlCom.mand 的 ExecuteXmlReader 方法创建一个XmlReader,在普通SELE CT语句中加上FOR XML子句来完成的,查询结果存储为XML文档。3.根据权利要求2用SQLServer2000中新提供的FOR XML子句检索SQL数据并生成XML文档主要是二种模式:RAW模式及aUTO模式。4.根据权利要求3中的RAW模式得查询结果并将结果集内的各行转换为xML元素,用一般标识符〈row〉作为元素标记。5.根据权利要求3简单的嵌套XML树返回查询结果;在FROM子句内,每个在SELECT子句中至少有一列被列出的表都表示为一个XML元素,SELE CT子句中列出的列映射到适当的元素特性。
【专利摘要】基于NET的XML与SQLServer数据交换方法使用SELECT语句可以把查询结果存储为XML文档,使用0PENxML语句提供了在关系数据库表中存储XML文档的功能,并实际实现了SQLServer2000和XML之问的数据交换。
【IPC分类】G06F17/30
【公开号】CN105488080
【申请号】CN201410537083
【发明人】不公告发明人
【申请人】镇江鼎拓科技信息有限公司
【公开日】2016年4月13日
【申请日】2014年10月13日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1