当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server数据库和XML标识语言的集成

MSSQL
如何用SQL语句来判断已知表是否存在
剖析SQL Server 2005中的报告服务架构
使用Microsoft SQL Server 2000的XML查询
让SQL Server为工作负载高峰提前准备
用Sql server一次插入多条数据
SQL SERVER2000深入学习之常见错误
关于SQL Server数据库的若干注意事项
sql server 2005中的表分区
SQL Server实用经验与技巧大汇集
限制SQL Server只能让指定的机器连接
SQL Server数据汇总完全解析
SQL查询语句使用精华
优化SQL Server服务器内存配置的策略
Sql server进行优化50招特效
用SQL语句实现异构数据库之间的导数据导入/出
SQL Server Compact Edition RC1 发布!
SQL Server死锁的分析
加快SQL Server备份和重新存储的速度
使用TSQL操作面试SQL Server开发人员
SQL 外链接操作小结 inner join left join right join

MSSQL 中的 SQL Server数据库和XML标识语言的集成


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 168 ::
收藏到网摘: n/a

XML相比HTML给予了Web开发人员更大的编程灵活性。这种技术驱动开发机构尝试把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 3SELECT Orders.OrderID, Orders.OrderDate, ProductIDFROM Orders, [Order Details]WHERE Orders.OrderID = [Order Details].OrderIDORDER BY Orders.OrderIDFOR XML RAW 

  执行后产生的结果如下: 

  <row OrderID="10248" OrderDate="1996-07-04T00:00:00" ProductID="11"/> 

  <row OrderID="10248" OrderDate="1996-07-04T00:00:00" ProductID="42"/> 

  <row OrderID="10248" OrderDate="1996-07-04T00:00:00" roductID="72"/> 

  AUTO示例 

  我们执行以下的SQL语句: 

  ‘结果限制为3条记录。SET ROWCOUNT 3SELECT Orders.OrderID, Orders.OrderDate, ProductIDFROM Orders, [Order Details]WHERE Orders.OrderID = [Order Details].OrderIDORDER BY Orders.OrderIDFOR XML AUTO 

  产生的结果如下所示: 

  <Orders OrderID="10248" OrderDate="1996-07-04T00:00:00"> 

  <Order_x0020_Details ProductID="11"/> 

  <Order_x0020_Details ProductID="42"/> 

  <Order_x0020_Details ProductID="72"/> 

  </Orders> 

  EXPLICIT示例 

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

  有关的语法很复杂,而且超出了本文的讨论范围。[ , XMLDATA ] [ , ELEMENTS ] [ , BINARY BASE64 ] 是相应的可选参数。 

  可选元素 

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

  如果你设置该选项,那么XML-Data schema就会包含在结果集合里。以下是SQL语句: 

  SET ROWCOUNT 3SELECT Orders.OrderID, Orders.OrderDate, ProductIDFROM Orders, [Order Details]WHERE Orders.OrderID = [Order Details].OrderIDORDER BY Orders.OrderIDFOR XML AUTO, XMLDATA 

  以上的SQL语句产生以下结果: 

  "urn:schemas-microsoft-com:datatypes">order="many">… 

  ELEMENTS 

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

  BINARY BASE64 

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

  注:本文只是对FOR XML子句的简单说明,这里要提醒你的是这一部分不过是XML同SQL Server集成需要注意的一点,其他方面的问题还包括IIS的OPENXML 函数和模版文件等