从存储过程C#中读取返回的xml

时间:2018-10-10 11:15:43

标签: c# .net tsql

嗨,我很难读取存储过程返回的XML,我想通过在SQL Server上执行该过程来获取想要的XML

我的存储过程:

CREATE PROCEDURE [dbo].[GetUser]  
    @Username nvarchar(50)  
AS

select( SELECT * FROM "User" 
WHERE "User".Username = @Username   
FOR XML AUTO, ELEMENTS, ROOT('Users')) AS result

这里是我的C#代码:

using (var conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConString"].ConnectionString))
using (SqlCommand cmd = new SqlCommand("[GetUser]", conn))
{
     cmd.Parameters.AddWithValue("@Username", Username);
     cmd.CommandType = System.Data.CommandType.StoredProcedure;
     conn.Open();
     XmlReader reader = cmd.ExecuteXmlReader();
}

读者不断获得“无”的价值我做错了什么,请帮忙 我只想要XML作为字符串

希望可以为您提供帮助

谢谢

1 个答案:

答案 0 :(得分:1)

您得到了读者,但没有阅读:

 using (var xmlReader = cmd.ExecuteXmlReader())
        {
           while(xmlReader.Read())
           {
            string s = xmlReader.ReadOuterXml();      
           }
 }

但是即使那样也可能会有问题,因为会给您一个字符串。 This link may give more details。如果您由于工作XPathDocument而缺少信息,则可能需要与ReadOuterXml合作。