选择显示字体大小

sql server和xml的集成

xml可谓最新的数据存储解决方案了。xml相比html给予了web开发人员更大的编程灵活性。这种新技术驱动开发机构尝试把xml同自己的产品集成起来。微软就是采取如此举措的先驱者。微软公司在开发inte.net产品的时候一度慢慢腾腾,现在可就不同了。最近一位微软公司的高级职员就这样说:“你要给我们一刀,伤口里出来的尽是xml。”也许形容得有点过分,但事实确实是这样的:微软的几乎所有产品中都能看到xml的身影。举个例子:微软是如何在其sql server产品线中集成xml的呢?下面咱们就来看看关键的for xml子句。

xml的名义获取信息

sql server和xml之间的集成首要一点就是根据sql数据创建xml文件。xml文件的构造并不复杂,用简单的脚本和ado记录集就可以轻松产生。这个任务虽然不算麻烦,但开发人员却需要针对他们从服务器获取的结果集合产生不同的脚本,或者编写更为复杂的通用脚本。select 语句则由此而配备了新的for xml子句。

该子句的语法如下所示:
[ for { xml { raw auto explicit }
[ , xmldata ]
[ , elements ]
[ , binary base64 ] } ]

for xml子句的xml模式由三种参数值表示:raw、auto或者explicit。模式决定了结果xml的形式和组成。下面我们就更深入些地通过以下示例了解以上各个xml选项。

raw示例
我们执行以下的sql语句:
set rowcount 3
select orders.orderid, orders.orderdate, productid
from orders, [order details]
where orders.orderid = [order details].orderid
order by orders.orderid
for xml raw

执行后产生的结果如下:
<row orderid=&quot;10248&quot; orderdate=&quot;1996-07-04t00:00:00&quot; productid=&quot;11&quot;/>
<row orderid=&quot;10248&quot; orderdate=&quot;1996-07-04t00:00:00&quot; productid=&quot;42&quot;/>
<row orderid=&quot;10248&quot; orderdate=&quot;1996-07-04t00:00:00&quot; productid=&quot;72&quot;/>

auto示例
我们执行以下的sql语句:
‘结果限制为3条记录。
set rowcount 3
select orders.orderid, orders.orderdate, productid
from orders, [order details]
where orders.orderid = [order details].orderid
order by orders.orderid
for xml auto

产生的结果如下所示:
<orders orderid=&quot;10248&quot; orderdate=&quot;1996-07-04t00:00:00&quot;>
<order_x0020_details productid=&quot;11&quot;/>
<order_x0020_details productid=&quot;42&quot;/>
<order_x0020_details productid=&quot;72&quot;/>
</orders>

explicit示例
explicit模式给予查询编程人员对产生xml的完全控制能力。然而这种控制力度却要价不菲:你得编写每一查询以便sql语句能包含xml信息。

有关的语法很复杂,而且超出了本文的讨论范围。[ , xmldata ] [ , elements ] [ , binary base64 ] 是相应的可选参数。

可选元素


示例可以让我们对各种设置的内部工作机理有更多的了解,下面我们就进一步研究下for xml语句的可选元素xmldata。

如果你设置该选项,那么xml-data schema就会包含在结果集合里。以下是sql语句:
set rowcount 3
select orders.orderid, orders.orderdate, productid
from orders, [order details]
where orders.orderid = [order details].orderid
order by orders.orderid
for xml auto, xmldata

以上的sql语句产生以下结果:
<schema name=&quot;schema2&quot; xmlns=&quot;urn:schemas-microsoft-com:xml-data&quot; xmlns:dt=&quot;urn:schemas-microsoft-com:datatypes&quot;>
<elementtype name=&quot;orders&quot; content=&quot;eltonly&quot; model=&quot;closed&quot; order=&quot;many&quot;><element type=&quot;order_x0020_details&quot; maxoccurs=&quot;*&quot;/>…

elements
elements选项指示各数据列作为子元素而非属性返回。假如你采用auto模式就可以只采用该选项。

binary base64
使用该选项表示你希望采用base64编码格式表示二进制数据。

采用xml子句的说法可就多了,你最好参考下sql在线图书。

在线指南
sql server在线图书 对for xml子句的用法进行了阐述。而且还提到了在使用这一子句时要注意的多项限制。比方说,for xml字句不能同视图定义或者compute by子句合用。你不妨参考有关文档了解更多细节。

本文只是对for xml子句的简单说明,这里要提醒你的是这一部分不过是xml同sql server集成需要注意的一点,其他方面的问题还包括iis的openxml 函数和模版文件等。看来真是这样,sql server的每个毛孔都滴着xml这种东西。

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons