XmlReader没有从存储过程

时间:2017-02-02 11:58:11

标签: c# sql-server

我有一个以Xml格式返回数据的存储过程。最初根节点是表名本身。我也进行了更改,以便根节点是" xml"。

在存储过程中:

SELECT * FROM mytable
FOR XML PATH('mytable'), ROOT('xml'), ELEMENTS;

按如下方式读取结果时会出现同样的问题:

string xmlresult = string.Empty;

using (var command = (SqlCommand)connection.CreateCommand())
{
    command.CommandText = "sp_dosomething";
    command.CommandType = CommandType.StoredProcedure;

    using (XmlReader reader = command.ExecuteXmlReader())
    {
        while (reader.Read())
        {
            xmlresult = reader.ReadOuterXml();
        }
    }
}

例外是:

  

发送到ExecuteXmlReader的命令无效。该命令必须返回Xml结果。

在:

  

在System.Data.SqlClient.SqlCommand.CompleteXmlReader(SqlDataReader ds)   在System.Data.SqlClient.SqlCommand.ExecuteXmlReader()

我做错了什么?

1 个答案:

答案 0 :(得分:2)

从错误中可以清楚地看出,你得到的不是XML结果。

尝试使用 ExecuteReader()来获取输出并查看,而不是使用ExecuteXmlReader()。绝对不会是一个不错的XML。

// execute the command
reader = cmd.ExecuteReader();

// iterate through results, printing each to console
while (reader.Read())
{
    Console.WriteLine("Print the data here and check output will not be XML in your case");
}