我目前正在使用带有变量的存储过程来从数据库中获取数据,但我是以XML格式返回结果。我可以使用此存储过程从表中获取所有数据,并以XML格式返回:
public string GetAllPatients()
{
string conn = @"Data Source=SNICKERS\SQLEXPRESS;Initial Catalog=VerveDatabase;Integrated Security=True";
DataSet oDS = new DataSet();
SqlDataAdapter oCMD = new SqlDataAdapter("getAll", conn);
oCMD.Fill(oDS, "AllPatients");
return oDS.GetXml();
}
然而,当我尝试获取个人患者记录并以XML格式返回时,我不确定如何,我当前正在这样做:
public void getUser(int ParticipantID)
{
SqlConnection oConn = new SqlConnection();
oConn.ConnectionString = @"Data Source=SNICKERS\SQLEXPRESS;Initial Catalog=VerveDatabase;Integrated Security=True";
oConn.Open();
DataSet oDS = new DataSet();
SqlCommand cmd = new SqlCommand();
cmd.Connection = oConn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "getUser";
cmd.Parameters.Add(new SqlParameter("@ParticipantID",SqlDbType.Int));
cmd.Parameters["@ParticipantID"].Value = 1;
SqlDataReader dr = cmd.ExecuteReader();
}
答案 0 :(得分:2)
要从SQL Server获取XML,您的存储过程需要读取类似
的内容 SELECT whatever
FROM thetable
WHERE ID = @participantID
FOR XML AUTO
将生成XML结果,然后您可以使用
读取 var xmlResult = dr[0];
关于澄清的编辑
使用类似于第一个程序的代码替换第二个程序最后一行中的datareader
SqlDataAdapter oCMD = new SqlDataAdapter(cmd);
oCMD.Fill(oDS, "User");
return oDS.GetXml();
答案 1 :(得分:1)
使用cmd.ExecuteXmlReader()
获取XmlReader
,然后使用其方法(例如ReadOuterXml
)获取xml。
答案 2 :(得分:0)
要从存储过程返回自定义xml,请使用Path方法。以下是ADventure works数据库中的一个示例:
select c.customerID as "@ID",
c.accountnumber as "@AccountNumber",
c.rowguid as "comment()",
CAST('<Test/>' as XML ) as "node()",
c.CustomerType as "AdditionalInfo/@type",
c.modifieddate as "AdditionalInfo/text()",
c.rowguid as "node()"
from Sales.Customer c
where c.CustomerID in ( 1,2)
for xml path('Customer'),root('Customers');
output
<Customers>
<Customer ID="1" AccountNumber="AW00000001">
<!--3F5AE95E-B87D-4AED-95B4-C3797AFCB74F-->
<Test />
<AdditionalInfo type="S">2004-10-13T11:15:07.263</AdditionalInfo>3F5AE95E-B87D-4AED-95B4-C3797AFCB74F</Customer>
<Customer ID="2" AccountNumber="AW00000002">
<!--E552F657-A9AF-4A7D-A645-C429D6E02491-->
<Test />
<AdditionalInfo type="S">2004-10-13T11:15:07.263</AdditionalInfo>E552F657-A9AF-4A7D-A645-C429D6E02491</Customer>
</Customers>
要返回一个简单的xml,请参阅podiluska的答案。