c# - 操作数据集

标签 c# .net xml 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”。但我不知道如何从行中提取这些数据。

最佳答案

您可以使用类似SqlBulkCopy 的工具来有效地将所有这些行插入到表中。不过,您必须为 DataSet 中的每个表执行此操作。

很好的例子:https://msdn.microsoft.com/en-us/library/ex21zs8x(v=vs.110).aspx 一旦您有要插入的数据表。

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();
        }
    }
}

关于c# - 操作数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39835661/

相关文章:

c# - 在 Web 应用程序中传递用户信息的最佳方式是什么?

c# - 有没有一种简单的方法可以将(lambda 表达式)字符串解析为 Action 委托(delegate)?

c# - 一个 xelement 和多个命名空间

xml - 是否允许在 XSD 中有多个同名元素?

c# - 如何确定新的推力输入将当前坐标移动到指定坐标位置

c# - Windows 事件日志的时间格式是什么?

c# - 自定义错误页面

.net - ListView 与数据网格

.net - 如何调试.net垃圾回收?

c# - 在 C# 中将 XML 空日期反序列化为 DateTime