【轉】MS SQLSERVER SELECT FOR XML 中字符的限制問題

採用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章