【发布时间】:2018-03-10 13:06:42
【问题描述】:
我有以下数据表:-
我有下面的 SQL 表 Product:
数据表中的ITEM CODE是SQL中的ProductCode。
数据表中的 CLOSING(图像中的最后一列)是 SQL 中的Quantity。
我想根据 SQL 中的 CLOSING(数量)更新 ITEM CODE。
我写了这个批量更新函数:
using (SqlBulkCopy bcSQL = new SqlBulkCopy(con))
{
bcSQL.DestinationTableName = "Product";
// Map Source column name to Destination Column name
// Src Column is in your DataTable
// Dest Column is column name available in your SQL Table
bcSQL.ColumnMappings.Add(" ITEM CODE", "ProductCode");
bcSQL.ColumnMappings.Add(" Closing", "Quantity");
bcSQL.WriteToServer(dt);
}
但我收到此错误:
给定的 ColumnName 'ITEM CODE' 与数据源中的任何列都不匹配。
请帮忙 - 我该如何解决这个问题?
【问题讨论】:
-
猜测是因为我没有使用 SqlBulkCopy,但在命名列时尝试不使用空格 ' '。我知道过去这给我带来了麻烦。请改用
_并再次尝试代码。这又是一个疯狂的猜测,但在其他人来之前,你有一些东西可以尝试。 -
你能检查一下 dt 中的列名,看看它们是否和你在第一张图片中看到的一样吗?
-
即使消息是关于列名的,问题也可能出在数据中。检查数据类型和长度是否匹配。当数据为 NULL 时,还要检查默认值。最后,检查这些列中是否没有身份密钥。看看this answer。
-
同样,不相关,但您可能应该为
" CLOSING"映射使用大写。 -
谢谢你们两个间距是问题