MS SQLSERVER SELECT FOR XML 中字符的限制问题

摘要:
使用sqlcommand返回单行值查询的xml长度不能超过8000个字符。若要避免此行为,请使用ExecuteXmlReader或BeginExecuteXmlReader读取FORXML查询。有关详细信息,请参阅http://support.microsoft.com/default.aspx?


采用sqlcommand返回单行的值这种方式查询的xml长度不能超过8000个字符。

MS SQLSERVER SELECT FOR XML 中字符的限制问题第1张ssql = "select * from " + tablename + " FOR XML AUTO,ELEMENTS";      
MS SQLSERVER SELECT FOR XML 中字符的限制问题第1张                SqlCommand command 
= new SqlCommand(ssql, connection);
MS SQLSERVER SELECT FOR XML 中字符的限制问题第1张                resultXml 
= (string)SqlHelper.ExecuteScalar(connection, CommandType.Text, ssql);

查msdn发现
  如果您使用 ExecuteReaderBeginExecuteReader 访问 XML 数据,SQL Server 将以多行(每行 2,033 个字符)方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为,请使用 ExecuteXmlReaderBeginExecuteXmlReader 读取 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 数据被截断)。

改为

1MS SQLSERVER SELECT FOR XML 中字符的限制问题第1张           ssql = "select * from " + tablename + " FOR XML AUTO,ELEMENTS";      
2MS SQLSERVER SELECT FOR XML 中字符的限制问题第1张                SqlCommand command = new SqlCommand(ssql, connection);
3MS SQLSERVER SELECT FOR XML 中字符的限制问题第1张                System.Xml.XmlReader reader = command.ExecuteXmlReader();
4MS SQLSERVER SELECT FOR XML 中字符的限制问题第1张                reader.MoveToContent();
5MS SQLSERVER SELECT FOR XML 中字符的限制问题第1张                resultXml = reader.ReadOuterXml();
6MS SQLSERVER SELECT FOR XML 中字符的限制问题第1张

搞定。

免责声明:文章转载自《MS SQLSERVER SELECT FOR XML 中字符的限制问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Bash实现读写ini文件Monkey log分析说明下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle高级部分

回顾 多表关联查询的方式内连接 根据AB表关联的条件进行过滤查询,只保留满足条件数据 Select * from a,b where a.xxx=b.xxx;     Select * from a inner join b on a.xxx=b.xxxx     inner join c on a.xxxx=c.xxxx 外连接 左外连接 以左表为...

JSP中字符编码转换问题

问题描述:一个input.jsp页面中的参数,传递到另外一个save.jsp页面上,然后存入到数据库中,如果input.jsp页面输入偶数中文没有问题,输入奇数则出现?,存入数据库的也是?。 问题源码:save.jsp中 <%    String fileName=request.getParameter("Name");           Sys...

postgresql 一些简单应用(分页,取前N条数据,nvl(),数据类型转换)

1.分页 select * from (   select     row_number() over() as rownum,     H.*   from tableName H ) where rownum between page1  and page2  2.取前N条数据 select * from (   select     row_numb...

mybatis mapper学习1-mapper.xml映射文件生成:Mybatis Generator的下载-安装-配置-运行

mybatis3系列文章目录链接 1.下载eclipse 点击eclipse mars.1 下载eclipse mars.1版本  2.下载Mybatis Generator 插件 1)在线安装 在eclipse中 marketplace搜索Mybatis Generator 插件install安装  2)离线安装 在这个页面下载generator-...

Netty之EventLoop-netty学习笔记(11)-20210813

线程模型概述 基本的线程池化模式可以描述为: 从池的空闲线程列表中选择一个 Thread,并且指派它去运行一个已提交的任务(一个Runnable 的实现);当任务完成时,将该 Thread 返回给该列表,使其可被重用。 虽然池化和重用线程相对于简单地为每个任务都创建和销毁线程是一种进步,但是它并不能 消除由上下文切换所带来的开销,其将随着线程数量的增加很快...

SQL 语句实现查询子父节点

1. 查询所有父节点 SELECT T2.* FROM ( SELECT @R AS _id, ( SELECT @R := PARENT_ID FROM sys_org WHERE ID = _id ) AS PARENT_ID, @L := @L + 1 AS LVL FROM...