【发布时间】:2011-12-16 17:00:06
【问题描述】:
我在使用 SqlBulkCopy 导入 XML 文件时遇到问题。 XML 文件如下所示:
<root>
<Automobiles>
<Car Id="1" Name="SomeModel1"/>
<Car Id="2" Name="SomeModel2"/>
<Car Id="3" Name="SomeModel2"/>
</Automobiles>
</root>
我的桌子是这样的:
Int Id
varchar Name
这是我的代码:
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("autolist.xml"));
SqlConnection connection = new SqlConnection(
ConfigurationManager.ConnectionStrings["Connection"].ToString());
SqlBulkCopy sbc = new SqlBulkCopy(connection);
sbc.DestinationTableName = "Automobiles";
foreach (DataColumn dc in ds.Tables[0].Columns)
{
sbc.ColumnMappings.Add(dc.Caption, dc.Caption);
}
connection.Open();
sbc.WriteToServer(ds.Tables[0]);
connection.Close();
我只能导入Id 而不能导入名称,因为它的属性和DataSet 只包含一列。有没有办法将属性映射到列?
也许使用XmlDocument 而不是DataSet 更好?
我认为我有什么问题。当我在汽车元素周围有一些根元素并且数据集表中缺少列时,数据集完全不同。它在没有根元素的情况下运行良好。
【问题讨论】:
-
我已尝试导入您的代码,并且 DateSet 有 2 列(Id 和 Name),所以这不是问题。您的映射可能有问题吗?
-
感谢您的评论。我会检查我的映射
标签: .net xml dataset xmldocument sqlbulkcopy