採用sqlcommand返回單行的值這種方式查詢的xml長度不能超過8000個字符。
ssql = "select * from " + tablename + " FOR XML AUTO,ELEMENTS";
SqlCommand command = new SqlCommand(ssql, connection);
resultXml = (string)SqlHelper.ExecuteScalar(connection, CommandType.Text, ssql);
查msdn發現
如果您使用 ExecuteReader 或 BeginExecuteReader 訪問 XML 數據,SQL Server 將以多行(每行 2,033 個字符)方式返回長度大於 2,033 個字符的所有 XML 結果。若要避免發生此行爲,請使用 ExecuteXmlReader 或 BeginExecuteXmlReader 讀取 FOR XML 查詢。有關更多信息,請參見位於 http://support.microsoft.com/default.aspx?ln=zh-cn 上的 Microsoft 知識庫中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”(PRB:使用 SqlDataReader 時 XML 數據被截斷)。
改爲
1 ssql = "select * from " + tablename + " FOR XML AUTO,ELEMENTS";
2 SqlCommand command = new SqlCommand(ssql, connection);
3 System.Xml.XmlReader reader = command.ExecuteXmlReader();
4 reader.MoveToContent();
5 resultXml = reader.ReadOuterXml();
6
搞定。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jasonfqw/archive/2010/01/27/5261541.aspx