我有一个返回一段 XML 的存储过程。当我从 MS SQL Management Studio 执行它时它工作正常。我需要编写一些 C# 代码来执行 proc 并获取生成的 XML 并将其写入文件。我编写了代码并执行了 proc(我使用分析器进行了检查),没有错误,但 XmlReader 为空。我的代码是这样的:
using (SqlConnection c = new SqlConnection(-snip-))
{
c.Open();
SqlCommand myCommand = new SqlCommand("sp_formfill_contract_xml", c);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("@i_contract_id", frm_contract_id.Text.ToString());
System.Xml.XmlReader xmlr = myCommand.ExecuteXmlReader();
xmlr.Read();
while (xmlr.ReadState != System.Xml.ReadState.EndOfFile)
{
MessageBox.Show(xmlr.ReadOuterXml());
// do stuff with the XML snippet here
}
c.Close();
}
作为比较测试,我创建了第二个存储过程,它返回一个包含第一个过程生成的 XML 的纯字符串,只要我不使用 XML 阅读器,C# 代码就可以很好地接收它。所以这与 XML proc 返回的数据类型有关,这使得它看起来是空的。
有任何想法吗?-肖恩