C# 从.NET调用时,从SQL Server 2005返回的Xml原始数据不正确
我有一个存储过程,它返回XML raw的XML raw数据C# 从.NET调用时,从SQL Server 2005返回的Xml原始数据不正确,c#,.net,sql,sql-server-2005,.net-3.5,C#,.net,Sql,Sql Server 2005,.net 3.5,我有一个存储过程,它返回XML raw的XML raw数据,类似于以下格式: <row codelistid="1" codelistname="LOCATION" codeid="1557" codename="Hors Ile de France" languageid="1" /> 如果我将存储过程更改为输出数据而不是XML,并通过SQLDataReader读取数据,它似乎可以正常工作 有谁知道为什么会发生这种情况,因为我希望数据库返回XML 提前感谢。如
,类似于以下格式:
<row
codelistid="1" codelistname="LOCATION"
codeid="1557" codename="Hors Ile de France" languageid="1" />
如果我将存储过程更改为输出数据而不是XML,并通过SQLDataReader读取数据,它似乎可以正常工作
有谁知道为什么会发生这种情况,因为我希望数据库返回XML
提前感谢。如果将查询数据放入数据集中,然后将该数据集写入XML,该怎么办
public GetXmlFromDataSet()
{
DataSet myDataSet = new DataSet();
DbDataAdapter myDataAdapter = DatabaseFactory.CreateDataAdapter();
DbConnection DatabaseConnection = new DatabaseConnection(/*put appropriate values here*/);
XmlTextWriter myXmlTextWriter = new XmlTextWriter(/*put appropriate values here*/)
myDataDapter.SelectCommand = DatabaseFactory.CreateCommand();
myDataDapter.SelectCommand.CommandType = CommandType.StoredProcedure;
myDataAdapter.CommentText = "EXEC MyStoredProc";
myDataAdapter.SelectCommand.Connection = DatabaseConnection;
myDataAdapter.Fill(myDataSet);
myDataSet.WriteXml(myXmlWriter);
}
如果将查询数据放入数据集中,然后将该数据集写入XML,会怎么样
public GetXmlFromDataSet()
{
DataSet myDataSet = new DataSet();
DbDataAdapter myDataAdapter = DatabaseFactory.CreateDataAdapter();
DbConnection DatabaseConnection = new DatabaseConnection(/*put appropriate values here*/);
XmlTextWriter myXmlTextWriter = new XmlTextWriter(/*put appropriate values here*/)
myDataDapter.SelectCommand = DatabaseFactory.CreateCommand();
myDataDapter.SelectCommand.CommandType = CommandType.StoredProcedure;
myDataAdapter.CommentText = "EXEC MyStoredProc";
myDataAdapter.SelectCommand.Connection = DatabaseConnection;
myDataAdapter.Fill(myDataSet);
myDataSet.WriteXml(myXmlWriter);
}
reader.Read()
和reader.ReadOuterXml()
在同一个循环中会跳过一行。试试这个:
using (XmlReader reader = cmd.ExecuteXmlReader())
{
reader.Read(); //For initial first read.
while (!reader.EOF)
{
results.Root.Add(XElement.Parse(reader.ReadOuterXml()));
count += 1;
}
}
reader.Read()
和reader.ReadOuterXml()
在同一个循环中会跳过一行。试试这个:
using (XmlReader reader = cmd.ExecuteXmlReader())
{
reader.Read(); //For initial first read.
while (!reader.EOF)
{
results.Root.Add(XElement.Parse(reader.ReadOuterXml()));
count += 1;
}
}
AbZy-你完全正确,你只是忘了在你的示例中将reader.Read()放在while循环之外-谢谢你的帮助:-)@fedor333你是对的,现在将这些加起来。欢迎您:)谢谢您接受。AbZy-您完全正确,您只是忘了将reader.Read()放在示例中的while循环之外-谢谢您的帮助:-)@fedor333您是对的,现在将这些加起来。不客气:)谢谢你的接受。