引领 你用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数据从内存中删除。
本文转自http://www.dvbbs.net/tech/data/2006051772255.asp
分享到:
相关推荐
《SQL Server 2005数据库管理与应用指南》是一本深入探讨SQL Server 2005管理和应用的专业书籍,其第26章的源码提供了丰富的实例和实践操作,帮助读者更好地理解和掌握该版本数据库系统的精髓。在这个章节中,作者...
SQL Server是由微软开发的关系型数据库管理系统,主要应用于Windows环境下,提供Web和电子商务功能,如XML支持和安全的数据访问。SQL Server 2005是其某一时期的最新版本,它强调操作系统的稳定性对数据库的重要性。...
《SQL Server 2000 开发人员指南》是一本专为那些想要深入理解并熟练掌握Microsoft SQL Server 2000开发技术的IT专业人员准备的书籍。SQL Server 2000作为一款功能强大的关系型数据库管理系统,是企业级数据存储、...
DB2的发展历史丰富,从V2到V9,它引领了数据库技术进入XML时代,提供了优秀的开放性和并行性。 MySQL是一款开源、免费的数据库系统,特别适合小型Web应用和初创公司,因其低成本和易于部署而广受欢迎。然而,对于...
使用Microsoft SQL Server 2005中新的公共语言运行时特性和XML数据类型;为简单和复杂的更新生成逻辑和使用存储过程;使用ASP.NET 2.0中的新数据访问性设计Web应用程序——包括无代码数据绑定功能。 内容简介 本书...
总之,DB2初学者指南将引领你逐步踏入DB2的世界,从基本概念到高级应用,让你具备在实际工作中使用DB2的能力。无论你是想从事数据库管理、开发还是数据分析,这个指南都将是你宝贵的参考资料。通过深入学习和实践,...
6. **数据访问**:ADO.NET是.NET框架中的数据访问组件,它提供了与各种数据库交互的能力,包括SQL Server、Oracle等。通过DataSet和DataAdapter,开发者可以实现离线数据操作。 7. **XML和Web服务**:.NET框架支持...
动态网页技术是现代互联网开发中的核心组成部分,它使得网页...在阅读教程时,可参考“说明.txt”以获取更具体的指导,同时“爱书吧-2万本图书免费下载.url”可能提供了更多相关资源,助你在网页制作的道路上更进一步。
**全面的数据库访问**:Crystal Report内置超过35种数据源驱动,支持包括XML、企业级及关系型数据库在内的多种数据源,确保开发者可以轻松访问所需数据。 **广泛的设计与格式化选项**:用户可通过丰富的设计元素,...
3. **数据库服务**:利用如Microsoft SQL Server、Oracle等关系型数据库系统,为用户提供数据存储和查询服务。 4. **信息服务**:涵盖电子邮件、即时通讯等信息传递功能。 5. **分布式网络服务**:目录服务,用于...
Hibernate作为Java领域中最流行的ORM框架之一,其版本3.1在功能性和性能上都有显著提升,为数据库操作提供了更加灵活和高效的方式。 ### 一、Hibernate3.1概述 Hibernate3.1是Hibernate框架的一个重要版本,它不仅...
同时,也会涉及数据库访问技术,如ADO.NET,用于连接和操作SQL Server或其他数据库。 对于高级主题,书籍可能会涵盖多线程编程,使读者能够理解并发和异步操作。网络编程也是现代应用程序不可或缺的一部分,书籍会...
使用SQL语句进行CRUD(创建、读取、更新、删除)操作,如`INSERT`来添加新的联系人,`SELECT`来查询,`UPDATE`来修改,以及`DELETE`来删除。 4. **Servlet** 虽然标题没有明确提到Servlet,但在JSP应用中,Servlet...
- **LINQ**:允许开发者使用类似SQL的查询语言直接在代码中操作数据集合,简化了数据访问逻辑。 - **AJAX**:通过异步JavaScript和XML技术,实现Web应用的部分刷新,提高用户体验。 - **Entity Framework**:一种ORM...
任务十一和十二涉及数据库访问,包括Access和SQL Server的连接与数据操作,让学生掌握数据库编程基础。任务十三则重点讲解错误处理和异常处理,使学生学会调试和错误修复。 任务十四和十五分别引入Web应用程序设计...
这个PPT合集将覆盖以上各个知识点,为JavaWeb开发的学习者提供了一个系统的学习路径,从基础到进阶,一步步引领你成为JavaWeb开发的专家。通过深入学习和实践,你可以熟练掌握JavaWeb开发技术,应对各种复杂的Web...
8. **数据库访问**:VB 2008提供了ADO.NET组件,可以方便地连接和操作各种类型的数据库,如SQL Server、Access等,实现数据的增删改查。 9. **文件操作**:VB 2008提供了处理文件和流的能力,如读写文本文件、二...