2013-08-20 68 views
0

我想從Excel文件插入到SQL Server 2000使用批量複製的行。在表中有一個'rowguid'字段,其默認值設置爲(newid()),除了空值之外不能有其他值。 RowGUID也設置爲「是」。SqlBulkCopy dbnull.value錯誤

在我的代碼中,我刪除了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,唯一標識符,允許爲空取消選中。

+0

請給我們的錯誤消息。表格定義也會很好。 –

+0

@RuiJarimba加入問題。 –

回答

0

而不是

bulkCopy.ColumnMappings.Remove(value); 

嘗試

bulkCopy.ColumnMappings.Add(value); 
+0

這沒有奏效 –

+0

@StylesYoung:編輯我的答案 –

+0

不要看到答案的區別。 –

0

您必須刪除所引用的映射。所以如果你已經有ColumnMappings你必須這樣做:

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

bulkCopy.ColumnMappings.Remove(mapping);