gpt4 book ai didi

c# - 如何从存储过程返回 XML?

转载 作者:IT王子 更新时间:2023-10-29 04:42:36 26 4
gpt4 key购买 nike

我创建了一个返回 XML 的存储过程,我还想在我创建的方法中返回该 XML。

我有两个问题。首先,经过一些搜索后,不建议使用 .ExecuteScalar();,因为它会截断超过 2033 个字符的字符串。

因此,我找到了一个名为 ExecuteXMlReader() 的函数,但在 .NET 4.0 (C#) 上运行的 Visual Web Developer 2010 Express 中它抛出了错误 "System.Data. SqlClient.SqlCommand' 不包含 'ExecuteXMlReader' 的定义,并且找不到接受类型为 'System.Data.SqlClient.SqlCommand' 的第一个参数的扩展方法 'ExecuteXMlReader'”

这是我的存储过程:

CREATE PROCEDURE dbo.GETReport
(@ReportDate date)
AS
SELECT * FROM ReportTbl
WHERE ReportDate = @ReportDate
for xml auto, elements

set nocount on;

RETURN

这是我的方法:

using System.Data;
using System.Data.SqlClient;

...

//connect
SqlConnection conn = new SqlConnection("Data Source=localhost; User Id=foo; Password=foo; Initial Catalog=Database1");
conn.Open();

//create command
SqlCommand cmd = new SqlCommand("dbo.GETReport", conn);
cmd.Parameters.AddWithValue("@ReportDate", "3/24/2011");
cmd.CommandType = CommandType.StoredProcedure;

DataReader rd = cmd.ExecuteXMlReader(); //this is where error is occuring
//also, it is throwing an error for DataReader as well saying there is no
//type of namespace with that name
rd.Read();

string s = rd.ReadOuterXml(); //also dont know if this is how i should return the XML

其次,除了ExecuteXMLReader()问题之外,我不知道返回一个字符串是否是首先返回XML的正确方式...是否还有另一种对象类型我应该转换成??或者我应该使用的另一个功能??

提前致谢!

最佳答案

首先,SqlCommand 有一个ExecuteXmlReader 方法,而不是您写的ExecuteXMlReader(这是拼写错误)。二、SqlCommand.ExecuteXmlReader方法返回类型为 XmlReader 的值,而不是您的示例中的 DataReader。因此,将您的代码更改为:

using (XmlReader reader = cmd.ExecuteXmlReader())
{
while(reader.Read())
{
string s = reader.ReadOuterXml();
// do something with s
}
}

应该可以解决问题。

关于c# - 如何从存储过程返回 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5423980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com