0
嗨,请告诉我如何使用查询从SQL Server中的表生成XML文件。 我的查询是,如何编写查询以从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>
在这里,我想要将根节点添加为j obs和子根节点作为工作。我试过 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>
谢谢。
谢谢@Abhishek,我试过你的代码..它给这样的输出.. - - ....> XML_F52E2B61-18A1-11d1-B105-00805F49916B>
–
Srinivas
2014-10-09 06:40:51
您好1612,其相当难以生成整个代码,在这种情况下,我的方法是:从存储过程中,我将返回'xml'和c#代码我会选择字符串而不是数据集。在写入xml文件之前,只需应用linq即可获得元素。 LinQ like'var result = xmldoc.Element(“Jobs”))'.........将执行像' XML_F52E2B61-18A1-11d1-B105-00805F49916B>' 。 –
Abhishek
2014-10-09 06:53:09
谢谢@Abhishek,如果我从查询工作中删除'FOR XML PATH('Job'),ROOT('JOBS')'。但我得到了
下面是例子,你需要做什么。在你的情况下,当你从方法
GetJobDetails
的数据库中获取数据时,应该返回DataSet
,DataSetName = "Jobs"
和DataTable
的defaultTableName应该是Job!由于我写这个例子,你没有显示从数据库中获取数据的方法!
编辑:
首先在
btnXML_Click
写这样的:,而不是
在
private DataSet GetJobDetails()
写这样的:逸aSet ds = new DataSet(“Jobs”);的
代替:
IN
SQLProvider
类,你应该添加属性表名,当DataSqlAdapter.Fill本查询:你需要的属性
TableName
值设置为Job
来源
2014-10-09 06:00:15 mybirthname
谢谢@mybirthname。我更新了我的查询,请检查它.. – Srinivas 2014-10-09 06:07:16
@ 1612我希望您使用SqlDataAdapter.Fill方法返回dataSet? – mybirthname 2014-10-09 06:11:15
@ 1612我不能更具体地希望它可以帮助你。 – mybirthname 2014-10-09 06:21:10
相关问题