使数据支持

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  学习如何用SQLServer的XML特征为你的提供新的功能。
  如果你在IT业工作,那么你很可能听说过XML;但如果你的工作主要与SQLServer有关,那么你可能并没有直接运用过XML。XML已经是Web环境中的普遍的数据格式了,而且它也是中主要的底层技术之一。SQLServer以两种方式来支持XML:通过SQLServer本身的功能,以及通过发布称为SQLXML的额外的功能。SQLXML扩展了SQLServer,并提供了XML兼容性。在本月的专栏中,我将讲述SQLServer对XML的内置的支持,并讲述通过发布SQLXML而增加的一些功能(见图1)。SQLServer支持XML就意味着,我们可以更有效地更新和读取数据了;我们不再需要将XML数据转换成数据库可以理解的另一种格式,或将XML数据从数据库转换成XML。而且,可供开发人员选择的方法也更多了,就是说,他们在访问数据方面更灵活了。

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



图1.提供XML支持

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

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

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
个人分类: 数据库
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭