for xml为什么不返回所有的数据?

coldljy 2002-03-18 04:16:32
SELECT * FROM test FOR xml auto,ELEMENTS

w2k adv server + SQL Server2k
...全文
53 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaguarcts 2002-04-21
  • 打赏
  • 举报
回复
得有顶层元素。
wylyf 2002-04-21
  • 打赏
  • 举报
回复
学习学习!
echo_llee 2002-04-20
  • 打赏
  • 举报
回复
bluepower2008(蓝色力量)说得没错,原先我也奇怪为什么数据老被截断,总是读出一截的文档出来。原来是设置问题。
neilchen 2002-04-03
  • 打赏
  • 举报
回复
sql=SELECT * FROM Employees FOR XML AUTO&root=root 是最关键的 !root=root才可以创建合法的XML文档
dakulaliu 2002-03-25
  • 打赏
  • 举报
回复
我建议你这么做
第一种方法:
创建 nwind 虚拟目录

在 Microsoft SQL Server 程序组中,单击"在 IIS 中配置 SQL XML 支持"。


展开服务器,然后单击想要的 Web 站点。


在"操作"菜单上指向"新建"子菜单,然后单击"虚拟目录"命令。新虚拟目录的属性页将显示在屏幕上。


在"新的虚拟目录属性"对话框的"常规"选项卡上,输入虚拟目录的名称。对于本例,键入 nwind 和物理目录路径(例如 C:\Inetpub\Wwwroot\nwind,假设在 C:\Inetpub\Wwwroot 目录中已创建了 nwind 子目录)。或者可以使用"浏览"按钮选择目录。


在"安全性"选项卡上,选择"SQL Server"并输入有效的 SQL Server 登录信息。当进入下一个选项卡时,它将请您确认刚才输入的密码。


在"数据源"选项卡上,在"SQL Server"框中输入服务器的名称,例如 (local);如果在指定的计算机上安装了多个实例,则输入 SQL Server 2000 实例的名称(可选)。在"数据库"框中,输入 Northwind 作为默认数据库的名称。


在"设置"选项卡上,选择"允许 URL 查询"、"允许模板查询"、"允许 XPath"和"允许 POST"选项。


在"虚拟名称"选项卡上,单击"新建"按钮以创建模板类型的虚拟名称。
在"虚拟名称配置"对话框中:

在"虚拟名称"框内输入 template(可以是用户指定的任意名称)。在"类型"列表中,选择"模板"。输入路径(例如,C:\Inetpub\Wwwroot\nwind\template,假设与虚拟目录相关联的物理目录下有一个子目录 template,但并不检查该目录是否存在)。单击"保存"按钮保存虚拟名称。
在"虚拟名称"选项卡上,单击"新建"按钮以创建架构类型的虚拟名称。
在"虚拟名称"框内输入 schema(可以是用户指定的任意名称)。在"类型"列表中,选择"架构"。输入路径(例如,C:\Inetpub\Wwwroot\nwind\schema,假设与虚拟目录相关联的物理目录下有一个子目录 schema)。单击"保存"按钮保存虚拟名称。
在"虚拟名称"选项卡上,单击"新建"按钮以创建模板和架构类型的虚拟名称。
在"虚拟名称"框内输入 dbobject(可以是用户指定的任意名称)。在"类型"列表中,选择 dbobject。单击"保存"按钮保存虚拟名称。
单击"确定"按钮保存设置。
这就创建了虚拟目录 nwind。默认情况下,使用该虚拟目录对 Northwind 数据库执行指定的查询。

若要测试虚拟目录,请在浏览器中键入:http://<IISServer>/nwind?sql=SELECT * FROM Employees FOR XML AUTO&root=root 并按 ENTER 键。

第二种方法:
你通过ADO读取你上述方法得到的结果集,该结果集只有一列,你可以首先
dim strXML
strXML = "<root>"

'objRs是我定义的返回结果集对象
do while not objRs.EOF
strXML = strXML & objRs.Fields.Item(0).value

objRs.MoveNext
Loop

strXML = strXML & </root>
'创建一个DOM对象
dim objXml
set objXml = Server.CreateObject("msxml2.DOMDocument")
objXml.async = false

objXml.loadXML strXML
objXml.Save "C:\str.xml"
bluepower2008 2002-03-25
  • 打赏
  • 举报
回复
对于C#,我不是太懂,不过我建议你把表中TEXT字段去掉后再测试一下,看是否正常来判断是不是TEXT字段造成的,另外,你能否统计一下字符截断后的长度,看是否是个固定值。
coldljy 2002-03-24
  • 打赏
  • 举报
回复
C#
几条到几百条吧,每一条的大小就很难说了,因为有个Text字段

StringBuilder sb = new StringBuilder();
string strSQL ="SELECT * FROM MsgBoardV Where FatherID = 1 FOR xml auto,ELEMENTS";

SqlConnection myCn = new SqlConnection(strConn);
myCn.Open();
SqlCommand myCmd = new SqlCommand(strSQL,myCn);
XmlTextReader xtr = (XmlTextReader)myCmd.ExecuteXmlReader();
sb.Append(xtr.GetRemainder().ReadToEnd());
bluepower2008 2002-03-22
  • 打赏
  • 举报
回复
程序中取是用的什么方法,你的数据量有多少?
coldljy 2002-03-21
  • 打赏
  • 举报
回复
我是在程序里取得呀(有是查询分析器,不过分析器也是这样),有什么地方设置吗?
bluepower2008 2002-03-20
  • 打赏
  • 举报
回复
coldljy(凤舞N天) :早点说清楚现象不就行了。你使用查询分析器查的吧,这个问题我估计多半是你的查询分析器的设置的问题,和数据无关。到〔工具〕-〔选项〕-〔结果〕,把每列最多字符数改成10000,再试试。

祝你成功!
coldljy 2002-03-19
  • 打赏
  • 举报
回复
不是假象啊,我在程序里取得的数据也是那样
ctrlpower 2002-03-19
  • 打赏
  • 举报
回复
通过url查询看看!
那可能是假相!
coldljy 2002-03-19
  • 打赏
  • 举报
回复
记录显示得不完整,明显的标签没有闭合.

e.g.
...
<Name>asdf</Na
bluepower2008 2002-03-18
  • 打赏
  • 举报
回复
如果直接查询显示的记录有多少,for xml显示的记录条数是多少?
这种问题我怎么没碰到过,ELEMENTS应该没有影响,那是确定数据是作为元素,还是作为属性。
coldljy 2002-03-18
  • 打赏
  • 举报
回复
去掉也一样
net_steven 2002-03-18
  • 打赏
  • 举报
回复
去掉ELEMENTS选项呢?

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧