ExecuteScalar()不返回单元格的完整内容

时间:2015-10-27 14:28:17

标签: c# sql-server xml

我有一个返回XML字符串的存储过程。当我直接从表中复制它时,我完全按照我的预期得到了所有内容。

但是,当我尝试使用C#运行此存储过程时,ExecuteScalar()仅返回我期待的70行中的46行。

以下是我使用的代码:

using (SqlConnection con = new SqlConnection("Data Source=TEST;Initial Catalog=BMRSK;Integrated Security=True"))
{
    using (SqlCommand buildXML = new SqlCommand("usp_BUILD_RISKCALC_XML", con))
    {
        buildXML.CommandType = CommandType.StoredProcedure;

        con.Open();

        XmlDocument xdoc = new XmlDocument();
        xdoc.LoadXml((string)buildXML.ExecuteScalar());
        xdoc.Save("Test.xml");
    }
}

这是我从行

获得的例外
xdoc.LoadXml((string)buildXML.ExecuteScalar());
  

未处理的类型' System.Xml.XmlException'发生在   system.xml.dll的

     

其他信息:发生了意外的文件结束。该   以下元素未关闭:ARGUMENT,ARGUMENT-LIST,OPERATION,   操作列表,RISKCALC。第1行,第2034号。

任何想法都将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

ExecuteScalar只读取2033个字符。请改用ExecuteXmlReader。

 private static void BuildXML()
 {
     using (SqlConnection con = new SqlConnection("Data Source=TEST;Initial Catalog=BMRSK;Integrated Security=True"))
     {
         using (SqlCommand buildXML = new SqlCommand("usp_BUILD_RISKCALC_XML", con))
         {
              buildXML.CommandType = CommandType.StoredProcedure;

              con.Open();

              XmlReader xmlReader = buildXML.ExecuteXmlReader();
              XmlDocument xdoc = new XmlDocument();
              xdoc.Load(xmlReader);
              xdoc.Save("Test.xml");
         }
     }
}