操纵数据集

时间:2016-10-03 15:55:20

标签: c# .net xml dataset

我无法操作/导航DataSet,我将其作为自动生成的XML文件提取。我的目标是将某些节点放入SQL表中的列中。

我的XML

<root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:rep="internal" xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:sv="http://www.jcp.org/jcr/sv/1.0">
      <submission name="entry0">
            <entry name="firstName">Name</entry> 
            <entry name="School">The University of College</entry> 
            <entry name="ExpectedYearofEntry">2019</entry> 
            <entry name="mailingAddress">Some st</entry> 
      </submission>
      <submission name..........
</root>

我正在尝试这个:

string xmlFile = @"xml.xml";

DataSet dataSet = new DataSet();
dataSet.ReadXml(xmlFile, XmlReadMode.InferSchema);
DataTable table = dataSet.Tables["entry"];
IEnumerable<DataRow> row = table.AsEnumerable();

当我休息时,我可以看到行中的数据;也就是说,ItemArray 0包含firstName和'Name'。但我无法弄清楚如何从行中提取这些数据。

1 个答案:

答案 0 :(得分:0)

您可以使用 SqlBulkCopy 之类的内容有效地将所有这些行插入到表中。您必须为DataSet中的每个表执行此操作。

很好的例子:https://msdn.microsoft.com/en-us/library/ex21zs8x(v=vs.110).aspx 一旦你有一个DataTable插入。

if (dt.Rows.Count > 0)
{
    string consString = ConfigurationManager.ConnectionStrings["connstring"].ConnectionString;
    using (SqlConnection con = new SqlConnection(consString))
    {
        using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
        {
            //Set target table
            sqlBulkCopy.DestinationTableName = "dbo.Customers";

            //Map the DataTable columns with the database table
            sqlBulkCopy.ColumnMappings.Add("Id", "CustomerId");
            sqlBulkCopy.ColumnMappings.Add("Name", "Name");
            sqlBulkCopy.ColumnMappings.Add("Country", "Country");
            con.Open();
            sqlBulkCopy.WriteToServer(dt);
            con.Close();
        }
    }
}