0

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

2 回答 2

1

有很多方法可以解决这个问题。

一方面,您可以投入一些时间并使用 SQL 内置的 XML 功能来直接查询和获取 XML 文档,然后您可以将其直接序列化为文件。一个非常基本的例子可以在这里找到。然后你会使用 DataReader 的 GetSqlXml 方法,像这样

SqlDataReader r = cmd.ExecuteReader();
SqlXml data = r.GetSqlXml(0);
XmlReader xr = data.CreateReader();

也许另一种选择是从 sql 数据读取器读取到 DTO(数据传输对象)。这可能是行之有效的方法。然后,一旦您有了 DTO 的列表,您就可以使用 .NET 的序列化 (DataContractSerializer) 序列化为 XML。

于 2013-06-11T19:41:29.130 回答
0

我强烈建议您查看这样的工具:

http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.80).aspx

如果您有您尝试创建的 xml 输出的 xsd,这将为您生成 .net 类。

无论哪种方式,将数据放入 POCO 样式类并序列化为 XML 都比尝试直接使用 XmlWriter 要好得多。

于 2013-06-11T19:28:05.213 回答