0

我正在尝试使用批量复制将 excel 文件中的行插入到 sql server 2000 中。表中有一个“rowguid”字段,其默认值设置为 (newid()),并且不能排除空值。RowGUID 也设置为“是”。

在我的代码中,我删除了 rowguid 的列映射。这是我的代码。

if (dr.HasRows)
{
    using (SqlBulkCopy bulkCopy =
        new SqlBulkCopy(sqlConnectionString))
        {
           bulkCopy.DestinationTableName = "configtest";
           SqlBulkCopyColumnMapping value = new SqlBulkCopyColumnMapping("rowguid", "rowguid");
           bulkCopy.ColumnMappings.Remove(value);
           bulkCopy.WriteToServer(dr);
         }


 }

我得到列 'rowguid 不允许 dbnull.value

该字段的定义是:rowguid、uniqueidentifier、允许不勾选空值。

4

2 回答 2

0

代替

bulkCopy.ColumnMappings.Remove(value);

尝试

bulkCopy.ColumnMappings.Add(value);
于 2013-08-20T07:25:52.890 回答
0

您必须删除引用的映射。所以如果你已经有 ColumnMappings 你必须这样做:

var mapping = bulkCopy.ColumnMappings.Cast<SqlBulkCopyColumnMapping>()
            .Single(x => x.DestinationColumn == "rowguid"));

bulkCopy.ColumnMappings.Remove(mapping);
于 2016-05-09T09:17:45.837 回答