将数据存储在xml格式文件中

时间:2013-06-11 19:24:39

标签: asp.net sql xml

我正在尝试构建一个函数,该函数将从多个表中检索“某些”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();

2 个答案:

答案 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要好得多。