c# - 从 .NET 调用时从 SQL Server 2005 返回的 Xml 原始数据不正确

标签 c# .net sql sql-server-2005 .net-3.5

我有一个返回 XML 原始数据的存储过程 FOR XML RAW 类似于以下格式:

<row 
    codelistid="1" codelistname="LOCATION" 
    codeid="1557" codename="Hors Ile de France" languageid="1" />

当我在 Management Studio 中运行存储过程时,返回了 1765 行数据,但是当我从我的 C# 代码调用该过程时,它似乎是 882 行的一半左右。似乎如果两行具有相同的 codeid 那么只返回一个

我正在使用 xmlreader 逐行返回 XML,然后将每一行作为 XElement 附加到我的结果 XDocument。

这是我检索数据的方式:

 using (SqlConnection conn = new SqlConnection(con))
        {
            XDocument results = new XDocument(
           new XElement("results"));

            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "MyStoredProc";
                conn.Open();
                var count = 0;
                using (XmlReader reader = cmd.ExecuteXmlReader())
                {

                    while (reader.Read())
                    {

                        results.Root.Add(XElement.Parse(reader.ReadOuterXml()));
                        count += 1;

                    }
                }

                return results;

            }
        }

如果我更改 SPROC 以输出数据而不是 XML 并通过 SQLDataReader 读取它,它似乎工作正常。

任何人都知道为什么会发生这种情况,因为我希望数据库返回 XML?

提前致谢。

最佳答案

reader.Read()reader.ReadOuterXml() 在同一个循环中会跳过一行。试试这个:

using (XmlReader reader = cmd.ExecuteXmlReader())
            {
               reader.Read(); //For initial first read.
               while (!reader.EOF)
                {

                    results.Root.Add(XElement.Parse(reader.ReadOuterXml()));
                    count += 1;

                }
            }

关于c# - 从 .NET 调用时从 SQL Server 2005 返回的 Xml 原始数据不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14899353/

相关文章:

c# - 轻松的安全 AppiumService

c# - HttpWebResponse 上的奇怪对象处置异常

java - querydsl 是否受到与 JPA Criteria API 相同的限制?

mysql - 如何对三结构数据应用SQL LIMIT?

php - 根据另一个表的值从一个表中进行选择

c# - 为谷歌浏览器设置默认搜索引擎

c# - 获取具有相同类的第二个节点

c# - 如何防止 DirectoryOperationException - 服务器无法处理目录请求

c# - 如何在 C# .NET 中获取 DPI?

c# - 在 C# .NET 2.0 或更高版本中,如何获取 Vista PC 上所有已安装应用程序的列表