技术开发 频道

SQL Server 2005中的新XML功能


    注意,web.config文件中使用的连接字符串有一个新属性Asynchronous Processing,该属性设置为true:
<connectionStrings> 
<add name="AdventureWorks" connectionString="server=localhost;
database=AdventureWorks;uid=sa;pwd=thiru;Asynchronous
Processing=true; "/>
</connectionStrings>
    在示例2中,创建了SqlConnection和SqlCommand对象实例,接着将它们的属性设置为合适的值。此后,调用SqlCommand对象的BeginExecuteXmlReader()方法,然后将该方法返回的IAsyncResult对象赋值给本地变量,便于随后使用:

IAsyncResult asyncResult = command.BeginExecuteXmlReader();
    接下来,调用WaitHandle对象的WaitOne()方法,来等待查询执行结束。注意,在调用WaitOne()方法之前,可自由实现一些其他处理。

// 此处实现一些其他处理 
asyncResult.AsyncWaitHandle.WaitOne();
    注意,WaitOne()是一个锁定调用,这意味着直到查询结束之前,该方法都不会返回。最后,通过调用EndExecuteXmlReader()方法(传递IasyncResult对象作为参数)来获取查询结果:
XmlReader reader = command.EndExecuteXmlReader(asyncResult);
    接着,将返回的XmlReader加载到XmlDocument对象中,然后显示输出:
XmlDocument doc = new XmlDocument(); 
// 将XmlReader加载到XmlDocument对象中
doc.Load(reader);
output.Text = "XML: "+ Server.HtmlEncode(doc.OuterXml);
    为了等待命令执行完成,示例2使用WaitHandle对象的WaitOne()方法。WaitHandle类还包括其他静态方法,例如WaitAll()和WaitAny()。这些静态方法将WaitHandle对象数组作为参数,同时根据调用的方法,当所有调用都完成时或者只要任一调用完成,立刻返回方法。例如,如果调用三个独立的执行命令,每个命令都异步执行,同时在数组中为每个调用都设置WaitHandle,那么在这些命令都执行完成之前,将调用WaitAll方法。这样可以让这三个命令在同一时间执行。

    需要重点注意的是WaitOne(),WaitAll()和WaitAny()方法都可接受一个超时参数值。使用这个超时设计,能够设置等待命令返回的时间数。如果方法超时,则返回False值。

3. SQL Server 2005中的XML数据类型

    SQL Server 2005的XML数据类型实现了ISO SQL-2003标准XML数据类型。在XML数据类型列中,能够存储格式良好的XML 1.0文档以及包含文本节点的XML内容片段。此外,还可以在非类型化XML列中存储任意数量的优异元素。在插入XML数据时,系统会检测格式良好的数据,同时拒绝非格式良好的数据。服务器端验证的范围依靠XSD架构是否与XML数据类型列关联。在查看XSD架构和XML列中的角色前,读者需要理解在XML数据类型列中存储原XML数据的原因。在XML数据类型列中存储XML数据对于以下情况很适用:

    通过在SQL Server中存储XML数据,开发人员则具有了一种在服务器上存储XML数据的直接方法,这种方式可保护文档顺序和文档结构。 

   当需要查询和修改XML数据时。
   当需要与外界系统交换数据,而不用执行多种转换时。
   当所使用的XML文档结构复杂,或者XML文档复合不同的或者复杂的架构,而难于映射到关系型结构时。
0
相关文章