【发布时间】:2014-10-09 05:38:49
【问题描述】:
您好,请告诉我如何使用查询从 SQL Server 中的表生成 XML 文件。 我的查询是,
select JobTitle as title,PostedDate as date from Jobs
C#代码,
protected void btnXML_Click(object sender, EventArgs e)
{
try
{
DataSet dsJobsDetails = new DataSet();
dsJobsDetails = GetJobDetails();
string fileLoc = @"C:\JobDocuments\jobsxml.xml";
FileStream fs = null;
fs = File.Create(fileLoc);
fs.Close();
if (File.Exists(fileLoc))
{
dsJobsDetails.WriteXml(fileLoc);
}
}
catch { }
}
private DataSet GetJobDetails()
{
DataSet ds = null;
SQLProvider provider = new SQLProvider();
SqlParameter[] paramCandidate = new SqlParameter[2];
try
{
paramCandidate[0] = provider.MakeParameter("JobID", SqlDbType.VarChar, "0");
paramCandidate[1] = provider.MakeParameter("AccountID", SqlDbType.Int, "0");
ds = provider.RunProcedure("Usp_GetJobsDetailsForXML", paramCandidate);
}
catch (Exception ex)
{
SetLastError(ex);
paramCandidate = null;
provider = null;
ds = null;
}
finally
{
paramCandidate = null;
provider = null;
}
return ds;
}
我的存储过程是,
CREATE PROCEDURE [dbo].[Usp_GetJobsDetailsForXML]
(
@JobID varchar(8000),
@AccountID int
)
AS
BEGIN
SET NOCOUNT ON;
select JobTitle as title,PostedDate as date,JobDescription as [description] from Jobs
where JobID in (@JobID)
--FOR XML PATH('Jobs')
END
输出如下,
<NewDataSet>
<Table>
<title>DBA</title>
<date>2014-09-30</date>
</Table>
<Table>
<title>Manager</title>
<date>2014-09-30</date>
</Table>
</NewDataSet>
在这里,我想将根节点添加为作业,将子根节点添加为作业。我试过了
select JobTitle as title,PostedDate as date from Jobs FOR XML PATH('jobs') 它不工作。
我想要输出如下,
<jobs>
<job>
<title>
<![CDATA[ DBA ]]>
</title>
<date>
<![CDATA[ 2014-09-30 ]]>
</date>
</job>
<job>
<title>
<![CDATA[ Manager ]]>
</title>
<date>
<![CDATA[ 2014-09-30 ]]>
</date>
</job>
<jobs>
谢谢你..
【问题讨论】:
标签: c# sql xml sql-server-2008