SqlBulkCopy dbnull.value错误

时间:2013-08-20 07:16:44

标签: c# excel guid sqlbulkcopy

我正在尝试使用bulkcopy将excel文件中的行插入到sql server 2000中。在表中有一个'rowguid'字段,其默认值设置为(newid()),除了null值外不能。 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,allow nulls unticked。

2 个答案:

答案 0 :(得分:0)

而不是

bulkCopy.ColumnMappings.Remove(value);

尝试

bulkCopy.ColumnMappings.Add(value);

答案 1 :(得分:0)

您必须删除引用的映射。因此,如果您已经拥有ColumnMappings,则必须这样做:

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

bulkCopy.ColumnMappings.Remove(mapping);