我无法操作/导航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'。但我无法弄清楚如何从行中提取这些数据。
答案 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();
}
}
}