如何使sql查询结果到xml文件
我有一个SQL查询,从表中选择一些数据。
ID Name Number Email 1 a 123 a@a.com 2 b 321 b@b.com 3 c 432 c@c.com
我从表中得到这些数据。 我想从数据创建一个xml文件。 像这样
1 a 123 a@a.com 2 b 321 b@b.com 3 c 432 c@c.com
如何在C#和SQL Server上执行此操作?
试试这个:
SELECT * FROM dbo.YourStudentTable FOR XML PATH('Student'), ROOT ('Students')
这应该返回您正在寻找的XML( 假设您有SQL Server 2005或更新版本)
阅读有关如何在TechNet上使用FOR XML PATH
及其function的更多信息
SQL Server :只是对@marc_s回答的补充 – 请注意xml区分大小写,并且生成的xml看起来像
1 a 123 a@a.com
如果你试图检索id
,你将找不到任何东西。
你可能想做这样的事情:
select ID as id, Name as name, Number as number, Email as email from dbo.Table1 for xml path('Student'), root('Students')
=> sql小提琴示例 。
C# :你可以使用WriteXml方法:
var ds = new DataSet("Students"); var dt = ds.Tables.Add("Student"); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("name", typeof(string)); dt.Columns.Add("number", typeof(string)); dt.Columns.Add("email", typeof(string)); dt.Rows.Add(1, "a", "123", "a@a.com"); dt.Tables[0].Rows.Add(2, "b", "321", "b@b.com"); dt.Tables[0].Rows.Add(3, "c", "432", "c@c.com"); var stream = new StringWriter(); ds.WriteXml(stream);
或使用Linq to XML:
new XElement("Students", dt.AsEnumerable().Select(r => new XElement("Student", new XElement("id", r["id"]), new XElement("name", r["name"]), new XElement("number", r["number"]), new XElement("email", r["email"]) )));
1)创建一个名为student的class级
[Serializable] public class Student { public int ID { get; set; } public string Name { get; set; } public int Number { get; set; } public string Email { get; set; } }
2)从数据库StudentList
数据输入名为StudentList
List
3)然后打开或创建xml文件并添加值
using (XmlWriter writer = XmlWriter.Create("Student.xml")) { writer.WriteStartDocument(); writer.WriteStartElement("Students"); foreach (Student student in StudentList) { writer.WriteStartElement("Student"); writer.WriteElementString("id", student.ID.ToString()); writer.WriteElementString("name", student.Name.ToString()); writer.WriteElementString("number", student.Number.ToString()); writer.WriteElementString("email", student.Email.ToString()); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteEndDocument(); }
尽管marc提供的解决方案正是您所需要的,但您可能希望深入了解文章中使用FOR XML子句将查询结果作为XML返回的各种选项。
您可以使用DataSet.GetXml()
函数获取XML格式文件的结果