将数据转换成XML
将ClientSideXml属性设置成True来实现这一步。你仍然用带有FOR XML子句的SELECT语句,但是当你将ClientSideXml设置为True时,在将语句传送到SQL Server前,托管类将FOR XML子句从SQL语句中去掉了。数据库不再看到FOR XML子句,可以更有效地将数据流返回给客户端。然后,SQL托管类在客户端将数据流转换成XML。
通过调用ExecuteXmlReader方法来执行SELECT语句,该方法返回一个XmlReader对象。然后,你将XmlReader对象载入一个XmlDocument,并将产生的OuterXml返回给调用者。
最后一个数据存取API是运用ADO 2.6和Visual Basic 6.0。通过打开一个新的VB6 ActiveX DLL项目来创建这个项目。重新命名Class1为ADO26,命名项目为DBXMLVS6。然后,给项目添加ActiveX Data Objects 2.6引用。一旦完成这一步,就给你的类添加ExecuteSelect方法(见列表3)。
同所有其它例子一样,你先要创建并打开你的数据库连接。然后,创建新的Command对象,并给Connection对象设置其ActiveConnection属性。SELECT语句同ADO.NET例子中用的SELECT语句一样。

图1. 看看哪种API最快
将Execute方法的返回值设置给RecordSet对象。你需要创建一个ADO Stream对象将结果集转换成XML。将Stream的Type属性设置成adTypeText,并打开它。打开后,在你的结果集上调用Save方法,指明你想把结果集保存为XML。一旦XML在数据流中,用ReadText方法将它返回给调用者。
通过创建简单的ASP和ASP.NET页面,调用组件并将XML返回给浏览器,我们就可以测试每种API实现的性能和可扩展性(在图1中可以看到结果,关于更详细的结果,请参考工具条“测试记录”。关于这些ASP和ASP.NET页面,请在此下载代码。)
随着Microsoft不断增加新的功能并改进性能,XML数据存取APIs也在不断发展。因为未来的SQL Server版本将增加对XML的本地支持,而且APIs通过利用这些功能得以不断增强,所以API不断发展的这个趋势也将持续下去。然而,如今现有的APIs已经提供了强大的功能和性能组合,可以使你构建高性能的XML应用程序。