我有一个数据库表,包含列和一个priamary键。
我想从c#中的数据表中进行批量复制。
当我的表中有主键时,我得到了异常,因为该表有6列,而我的数据表只有5列。
我该怎么办?
我应该在c#中添加主键到我的数据表吗?
(如果您需要任何代码告诉我请求)
这是数据表
private DataTable getBasicDataTable()
{
DataTable dataTable = new DataTable();
dataTable.Clear();
dataTable.Columns.Add("customerID", typeof(int));
dataTable.Columns.Add("firstName", typeof(string));
dataTable.Columns.Add("lastName", typeof(string));
dataTable.Columns.Add("showsNumber", typeof(int));
dataTable.Columns.Add("visitNumber", typeof(int));
dataTable.Columns.Add("cancellation", typeof(int));
return dataTable;
}
但在我的数据库表中,我有完全相同的列,但有额外的ID
主键,
当我删除数据库中的主键时,一切都运行良好
答案 0 :(得分:2)
列映射定义数据源中列与目标列之间的关系。
...
如果数据源和目标表具有相同的列数,并且数据源中每个源列的序号位置与相应目标列的序号位置匹配,则不需要ColumnMappings集合。但是,如果列数不同,或者序数位置不一致,则必须使用ColumnMappings确保将数据复制到正确的列中。
请参阅SqlBulkCopyColumnMapping
上的示例了解如何使用它。
答案 1 :(得分:2)
我自己找到了解决方案
bc.ColumnMappings.Add("customerID", "customerID");
sbc.ColumnMappings.Add("firstName", "firstName");
sbc.ColumnMappings.Add("lastName", "lastName");
sbc.ColumnMappings.Add("showsNumber", "showsNumber");
sbc.ColumnMappings.Add("visitNumber", "visitNumber");
sbc.ColumnMappings.Add("cancellation", "cancellation");