我正在尝试构建一个函数,该函数将从多个表中检索“某些”SQL数据,并将其存储在XML格式的文件中。
如果我使用C#,它就像: -
一样简单SQL语句,
检索数据,
将数据存储在字符串列表中,
然后WriteXml(xmlFile,存储数据的变量)??
任何人都可以向我展示一个例子吗?
我在看: -
C#中的WriteXml()和WriteXmlSchema()函数
string xmlFile = Server.MapPath("Employees.xml");
ds.WriteXml(xmlFile, XmlWriteMode.WriteSchema);
另外,xmlSerialization是否需要我看一下?
示例SQL查询。
SqlConnection Connection1 = new SqlConnection(DBConnect.SqlServerConnection);
String strSQL1 = "SELECT xxx.MEMBERKEY, xxx.MEMBID, xyz.HPCODE, convert(varchar, OPFROMDT, 101) as OPFROMDT"
+ ", convert(varchar, OPTHRUDT, 101) as OPTHRUDT FROM [main].[dbo].[yyy] INNER JOIN [main].[dbo].[xxx] ON xxx.MEMBERKEY = yyy.MEMBERKEY "
+ "and opthrudt >= opfromdt INNER JOIN [main].[dbo].[xyz] ON yyy.HPCODEKEY = xyz.HPCODEKEY where MembID = @memID";
SqlCommand command1 = new SqlCommand(strSQL1, Connection1);
command1.Parameters.AddWithValue("@memID", memID);
SqlDataReader Dr1;
Connection1.Open();
Dr1 = command1.ExecuteReader();
while (Dr1.Read())
{
HPCODEs.Add((Dr1["HPCODE"].ToString()).TrimEnd());
OPFROMDTs.Add((Dr1["OPFROMDT"].ToString()).TrimEnd());
OPTHRUDTs.Add((Dr1["OPTHRUDT"].ToString()).TrimEnd());
}
Dr1.Close();
答案 0 :(得分:1)
有很多方法可以解决这个问题。
首先,您可以投入一些时间并使用SQL内置的XML功能来直接查询和获取XML文档,然后您可以直接将其序列化为文件。可以找到一个非常基本的例子here。然后你将使用DataReader的GetSqlXml方法,类似这样的
SqlDataReader r = cmd.ExecuteReader();
SqlXml data = r.GetSqlXml(0);
XmlReader xr = data.CreateReader();
也许另一种选择是从sql数据读取器读入DTO(数据传输对象)。这可能是经过验证的真实方法。然后,一旦有了DTO列表,就可以使用.NET的序列化(DataContractSerializer)来序列化为XML。
答案 1 :(得分:0)
我强烈建议您查看这样的工具:
http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.80).aspx
如果您要创建xml输出的xsd,这将为您生成.net类。
无论哪种方式,将数据放入POCO样式类并序列化为XML比直接使用XmlWriter要好得多。