从 SQL Server 2005 中处理 XML
2007-05-13 09:26:22 来源:WEB开发网<jobs job_id="1" min_lvl="10" max_lvl="10" />
<jobs job_id="2" min_lvl="200" max_lvl="250" />
<jobs job_id="3" min_lvl="175" max_lvl="225" />
<jobs job_id="4" min_lvl="175" max_lvl="250" />
<!-- some jobs rows deleted for compactness -->
使用 SqlXml 既支持文档,也支持片段。SqlXmlCreateReader() 方法总是创建一个 XmlReader,它通过使用新的 XmlReaderSettings 类来支持片段,如下所示:
// pseudocode from SqlXml.CreateReader
Stream stm = stm; // stream filled from column (code elided)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader xr = XmlReader.Create(
stm, String.Empty, null, null,settings);
如果您以同样的方式构造 XmlReader,则可以在输入参数中使用 XML 片段。尽管使用 SqlXml 类型时内置了片段支持,但是您在处理包含片段的 XmlReader 时仍需要小心。请注意,调用 XmlReader.GetOuterXml() 将只提供第一个片段;要定位 XmlReader 以获取随后的片段,您必须再次调用 XmlReaderRead 方法。我将在本文的稍后部分说明此问题。
T-SQL 的“SELECT ... FOR XML”生成了 XML 流,而不是一列一行的行集。它还以二进制格式而非 XML 的标准序列化提供了 XML。由于格式的不同,以及“SELECT ... FOR XML”总是生成片段,因此使用它需要特殊的方法。出于此目的,SqlClient 实现了一种提供程序特定的方法 SqlCommand.ExecuteXmlReader。如果使用 SQL Server 2000 和 ADO 1.0/1.1,则需要使用 ExecuteXmlReader 以获取 FOR XML 查询的结果,除非您想使用某些需要字符串连接的相当不好的替代方案。通过 SQL Server 2005 FOR XML 增强功能以及对 XML 作为数据类型的支持,您只需使用 ExecuteXmlReader 就能从 SQL Server 获取单个 XML 流。由于所有为 SQL Server 2000 编写的代码都使用此方法,因此该方法在 ADO.NET 2.0 中也受支持,而且得到了增强。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接