您的位置:软件 > 开发者网络 > 开发工具 > 开发专栏 > 数据库 > 正文
使SQL Server数据支持 XML
[文章信息]
作者:燕空
时间:2003-06-07
出处:天极论坛
责任编辑:方舟
[文章导读]
如果你在IT业工作,那么你很可能听说过XML......
advertisement
热点推荐
· 11.15软件精选 制作MSI文件
· 闪客五周年之闪客光荣榜
· 用Winamp“品尝”无限音乐
· 网络加、解密的技术应用
· 闪客五周年之闪客光荣榜:zoron
[正文]

1 2  下一页

  学习如何用SQL Server的XML特征为你的数据库提供新的功能。

  如果你在IT业工作,那么你很可能听说过XML;但如果你的工作主要与SQL Server有关,那么你可能并没有直接运用过XML。XML已经是Web编程环境中的普遍的数据格式了,而且它也是.NET Framework中主要的底层技术之一。SQL Server以两种方式来支持XML:通过SQL Server本身的功能,以及通过发布称为SQLXML的额外的功能。SQLXML扩展了SQL Server,并提供了XML兼容性。在本月的专栏中,我将讲述SQL Server对XML的内置的支持,并讲述通过发布SQLXML而增加的一些功能(见 图1)。SQL Server支持XML就意味着,我们可以更有效地更新和读取数据了;我们不再需要将XML数据转换成数据库可以理解的另一种格式,或将XML数据从数据库转换成XML。而且,可供开发人员选择的方法也更多了,就是说,他们在访问数据方面更灵活了。

  对XML的宣传已经有很多了,所以重要的一点是要意识到它只是一门简单的技术。本质上,它是用来描述数据的一个标准的文件格式。(有关XML基础知识的更多的信息,请参阅工具条“XML 101”。)从发布SQL Server 2000的最初版本以来,对XML的支持就已经是SQL Server的一部分了。SQL Server不是通过提供一个方法保存XML文件来支持XML的,而是提供了一个到关系数据的接口,使你可以在表和其它数据库对象中读写XML数据。SQL Server所固有的XML功能包括:可以通过HTTP、模板查询、FOR XML子句和OPENXML()函数来访问SQL Server。接下来,我将讲述这些功能是如何运作的,以及它们可以如何使你的企业受益。



图1. 提供 XML支持

  要通过HTTP访问一个SQL Server数据库,你必须首先设置一个虚拟目录。这个虚拟目录在HTTP协议和一个特定的数据库之间提供了一个链接。设置虚拟目录时,我们需要用“Configure SQL XML Support In IIS”菜单条目,你可以在Window的Start菜单中的SQL Server菜单条目找到该项。通过该菜单条目,你就可以指定虚拟目录的名称、物理路径、服务器名称、数据库名称和注册信息。一旦你创建了一个虚拟目录,你就可以通过一个URL将查询发送到数据库了。如果你设置了一个叫做Northwind的虚拟目录,并在浏览器中输入了查询http://localhost/Northwind?sql=SELECT+*+FROM+Shippers+FOR+XML+AUTO,ELEMENTS+&root=Shippers,它就会返回类似于“XML 101”工具条中的Shippers例子中的XML数据。与运用ADO或其它任何技术相比,HTTP查询会让我们更容易地来访问网站或Web应用程序的数据。 对于一个简单的查询语句来说,HTTP查询会很好,但对于一个更复杂的查询来说,这种格式就会变得难以理解并很难管理了。这种方法也不安全,因为查询源代码是暴露给用户的。另外一种可选方法是在HTTP上调用一个模板查询。一个模板查询就是一个包含SQL查询的XML文件。模板作为文件保存在服务器上。因此,如果你在一个叫做GetShippers.xml的模板中封装了Shippers SELECT查询,那么URL查询的形式就会是:http://localhost/Northwind/templates/GetShippers.xml。模板也可以带有参数,当你的模板调用一个存储过程时,该功能会很有用。在URL查询和模板查询中,如果你想从查询返回一个HTML页面,那么你可以指定一个XSLT样式表,将它用于XML。模板查询是读取数据的一个更安全的方法,它可以被缓存以得到更好的性能。

  你也可以用FOR XML子句将数据读取成XML格式,该方法从SQL Server表中返回数据,你可以把它们看做是XML数据。你可以在一个SELECT语句中运用FOR XML子句,它有三种模式可以以不同的格式来返回XML:RAW、AUTO和EXPLICIT。RAW模式将结果中的每个记录作为一个普通的行元素来返回,它被包含在一个<row/>标签中,并将每个列的值作为一个属性。AUTO模式将每个记录作为行元素返回,根据源表或视图对它进行命名。如果查询从一个表返回多个列,那么每个列的值就会被作为表元素的属性来返回。但最重要的是,如果你的SELECT语句执行了合并操作,那么AUTO模式就代表的是子行,它们作为元素嵌套在父行下。EXPLICIT模式有几个参数,你可以通过这些参数完全定义返回的XML的样式。你可以为每个元素定义标签,明确确定数据是如何嵌套的。FOR XML语句使我们不必再返回一个rowset,然后在客户端或中间层将它转换成XML了。

  OPENXML函数可以让你像操作一个表那样来运用XML数据,可以将它们转换成内存中的一个rowset。要运用OPENXML,首先要调用sp_xml_preparedocument存储过程,实际上,它将XML解析成一个数据树,并将那个数据的句柄传递到OPENXML函数。然后你就可以操作那个数据了:进行查询、将它插入到表中、等等。OPENXML函数可以带有三个参数:用于XML文档内部显示的句柄、一个rowpattern参数和一个flags参数。Rowpattern参数指定了应该返回原始的XML文档中的哪些节点。Flags参数指定了以属性为中心的映射(结果集中列名符合属性名)或以元素为中心的映射(结果集中列名符合元素名)。在处理完XML数据后,我们可以调用sp_xml_removedocument将XML数据从内存中删除。


1 2  下一页

·"WAP天极之IT新闻资讯,50万元等你拿"    ·天极WAP之游戏狂图,50万元等你下载

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容阅读排行榜
  • SQL Server与Access、Excel的数据转换
  • 11.15软件精选 制作MSI文件
  • 闪客五周年之闪客光荣榜
  • 兰欣推出我国第一款网络游戏专用音箱
  • 玩家发现117亡灵种族Bug
  • [配置推荐]极品HIFI配置
  • 东瀛美少女COSPLAY(55)
  • 用Winamp“品尝”无限音乐
  • 迷你型PStwo全面透析专题
  • Advertisement

    天极无线
    待机彩图    >>更多
    多彩动画    >>更多
    美妙和弦    >>更多
    天使在唱歌
    壁虎漫步
    PrettyBoy
    LoveLoveLove
    我是你的小小狗
    单身情歌
    十面埋伏
    祝酒歌
    回心转意
    波斯猫
    太委屈
    S.H.E
    潘玮柏
    M2M
    蔡依林
    阿牛
    林志炫
    陈弈迅
    刀郎
    黑龙
    S.H.E
    陶晶莹
    情人玫瑰坊
    音乐风云
    新片速递
    神秘测试
    都市约会
    ·天极彩信天天精彩
    ·图铃梦工厂下载无限!
    ·找寻童真,卡通专题
    ·夏日激情交友社区!
    ·星座运程,预测人生

    CSEEK搜索