SqlCommand.ExecuteXmlReader 方法

定义

CommandText 发送到 Connection,并生成一个 XmlReader 对象。

public:
 System::Xml::XmlReader ^ ExecuteXmlReader();
public System.Xml.XmlReader ExecuteXmlReader ();
member this.ExecuteXmlReader : unit -> System.Xml.XmlReader
Public Function ExecuteXmlReader () As XmlReader

返回

一个 XmlReader 对象。

例外

Value 设置为 Stream 时,使用的是 SqlDbType 而不是 Binary 或 VarBinary。 有关流式处理的详细信息,请参阅 SqlClient 流支持

- 或 -

设置为 SqlDbTypeValueTextReader,使用了 CharNCharNVarCharVarCharXml 以外的 。

- 或 -

Value 设置为 XmlReader 时,使用的是 SqlDbType 而不是 Xml

对锁定的行执行命令时出现异常。 当使用 Microsoft .NET Framework 1.0 版时不生成此异常。

- 或 -

流式处理操作期间发生了超时。 有关流式处理的详细信息,请参阅 SqlClient 流支持

流式处理操作期间关闭或删除了 SqlConnection。 有关流式处理的详细信息,请参阅 SqlClient 流支持

流式处理操作期间在 StreamXmlReaderTextReader 对象中出现了错误。 有关流式处理的详细信息,请参阅 SqlClient 流支持

流式处理操作期间关闭了 StreamXmlReaderTextReader 对象。 有关流式处理的详细信息,请参阅 SqlClient 流支持

示例

以下示例创建 , SqlCommand 然后使用 执行它 ExecuteXmlReader。 该示例将传递一个字符串,该字符串是 Transact-SQL FOR XML SELECT 语句,以及一个用于连接到数据源的字符串。

private static void CreateXMLReader(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        connection.Open();
        SqlCommand command = new SqlCommand(queryString, connection);
        System.Xml.XmlReader reader = command.ExecuteXmlReader();
    }
}
Public Sub CreateXMLReader(ByVal queryString As String, _
    ByVal connectionString As String)

    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As New SqlCommand(queryString, connection)
        Dim reader As System.Xml.XmlReader = command.ExecuteXmlReader
    End Using
End Sub

注解

此方法返回的 XmlReader 不支持异步操作。

属性 CommandText 通常使用有效的 FOR XML 子句指定 Transact-SQL 语句。 但是, CommandText 也可以指定一个语句,该语句返回 ntextnvarchar 包含有效 XML 的数据,或者指定使用 xml 数据类型定义的列的内容。

典型 ExecuteXmlReader 查询的格式可以如以下 Microsoft Visual C# 示例中所示:

SqlCommand command = new SqlCommand("SELECT * FROM dbo.Customers FOR XML AUTO, XMLDATA", SqlConn);

此方法还可用于检索包含 XML 数据的单行、单列结果集。 在这种情况下,如果返回多行,该方法 ExecuteXmlReader 会将 XmlReader 附加到第一行的值,并放弃结果集的其余部分。

MARS) 功能的多个活动结果集 (允许使用同一连接执行多个操作。

如果使用 ExecuteReaderBeginExecuteReader 访问 XML 数据,SQL Server将返回长度超过 2,033 个字符的任何 XML 结果,每行包含 2,033 个字符。 若要避免此行为,请使用 ExecuteXmlReaderBeginExecuteXmlReader 读取 FOR XML 查询。

适用于

另请参阅