【发布时间】:2014-09-16 12:23:42
【问题描述】:
我正在尝试以 xml 格式从 SQL Server 获取数据,并从该 xml 填充数据集。
这是我的查询:
SELECT *
FROM TblAcademicYear
FOR XML RAW('AcademicYear'), ELEMENTS;
这个查询给了我以下输出:
<AcademicYear>
<AcademicYearId>3</AcademicYearId>
<AcademicYearName>دو ہزار پندرہ</AcademicYearName>
<StartingYear>2015-01-01</StartingYear>
<EndingYear>2015-12-31</EndingYear>
<Comments>دو ہزار پندرہ کا تعلیم سال</Comments>
<RCO>2014-07-02</RCO>
<UserID>2</UserID>
</AcademicYear>
我的 C# 代码是:
SqlConnection conn = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand();
System.Xml.XmlReader xmlreader;
try
{
cmd.Connection = conn;
conn.Open();
cmd.CommandText = _Query;
xmlreader = cmd.ExecuteXmlReader();
conn.Close();
DataSet ds = new DataSet();
dt.Columns.Add("AcademicYearId", typeof(string));
dt.Columns.Add("AcademicYearName", typeof(string));
dt.Columns.Add("StartingYear", typeof(string));
dt.Columns.Add("EndingYear", typeof(string));
dt.Columns.Add("Comments", typeof(string));
dt.Columns.Add("RCO", typeof(string));
dt.Columns.Add("UserID", typeof(string));
ds.Tables.Add(dt);
ds.ReadXml(xmlreader);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
上面的代码运行完美,但没有给我数据
任何帮助将不胜感激.....
【问题讨论】:
-
到底为什么你想输出成 XML 然后再读回来?您可以直接从 SQL 查询中填充数据集,而完全不必担心 XML .....
-
绝对同意你@marc_s
-
@marc_s :实际上我正在开发 Web 服务 (WCF),有人告诉我不要在 Web 服务 (WCF) 中使用 DataTable/DataSet 因为互操作性,所以这就是为什么我认为 XML 在 WCF 中是最好的....我说的对吗?
-
不,不是这样 - WCF 将轻松愉快地将任何普通数据类型转换为 XML 以进行传输 - 以 XML 开头实际上是障碍多于好处!但在 WCF 服务中,我也不会使用像
DataTable这样的 .NET 重量级类型 - 使用正确的 POCO(普通旧 CLR 对象)及其列表/集合 - 不要使用DataTable或DataSet或任何其中....
标签: c# sql sql-server xml