SQL 服务器 return Select 语句 XML 数据类型并将其转换为 C# 中的 DataSet,ASP.Net

SQL Server return Select statement with XML datatype and convert it into DataSet in C#, ASP.Net

在我的数据库 table 中,我有一个列名 'SectionDatatable',其数据类型为 XML。在我的 C# 代码中,在我连接到我的数据库后,我查询以获取 SectionDatatable,这是我的数据库中的 XML 格式,UserDefinedSectionData。我需要将XML中的'SectionDatatable'数据类型转换成DataSet,请问怎么办。卡了1天,下面是我的代码

        SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
        csb.DataSource = @"CPX-XSYPQKSA91D\SQLEXPRESS";
        csb.InitialCatalog = "DNN_Database";
        csb.IntegratedSecurity = true;

        string connString = csb.ToString();

        string queryString = "select * FROM UserDefinedSectionData WHERE SectionDataTabId = @tabId";

        using (SqlConnection connection = new SqlConnection(connString))
        using (SqlCommand command = connection.CreateCommand())
        {
            command.CommandText = queryString;
            command.Parameters.Add(new SqlParameter("tabId", tabId));
            connection.Open();

            using (SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    string sectionData= reader["SectionDatatable"].ToString();
                    int moduleId = Int32.Parse(reader["SectionDataModuleId"].ToString());
                }
            }
        }

这是将 XML 字符串转换为 DataSet 的简单示例。此示例还演示了如何处理 DataSet.

中的所有表

您需要将此示例中的 XML 字符串替换为数据库中的 XML 输出。您可以根据访问数据的需要更改代码。

string RESULT_OF_SectionDatatable = "<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>";
var xmlReader = XmlReader.Create(new StringReader(RESULT_OF_SectionDatatable));

DataSet ds = new DataSet();
ds.ReadXml(xmlReader);

foreach (DataTable table in ds.Tables)
{
    Console.WriteLine(table);
    Console.WriteLine();

    foreach (var row in table.AsEnumerable())
    {
        for (int i = 0; i < table.Columns.Count; ++i)
        {
            Console.WriteLine(table.Columns[i].ColumnName +"\t" + row[i]);
        }
        Console.WriteLine();
    }
}