首页 > 解决方案 > SqlBulkCopy.WriteToServer 抛出异常“列不允许为空”

问题描述

我们使用 SqlBulkCopy.WriteToServer 将 DataTable 写入 SQL Server 中的表。异常中报告的列不为空,但 DataTable 中没有空值。我添加了代码来对 DataTable 中的每一行进行显式检查,没有一个有 NULL 值,但我得到了这个错误。更奇怪的是,同一列包含在具有相同数据的另一个 BulkCopy 中并且它可以工作。唯一的区别是在它起作用的情况下还有两列。

基本上,我有一个字典并使用 foreach 填充 DataTable。

foreach (KeyValuePair<string, myClass> item in myDictionary)
{
    DataRow dr = myDataTable.NewRow();
    dr["columnname"] = ...
.
.
. 
    myDataTable.Rows.Add(dr)
}

我尝试添加这样的内容以尝试查找原因:

if (string.IsNullOrEmpty(item.Value.myStringValue))
{
    Debugger.Break();
}

这永远不会被调用。然而当我这样做的时候

bulkCopy.WriteToServer(myDataTable)

我得到一个例外,列'x'不允许空值。我可以修改数据库中的列以允许空值,但这不是首选的解决方案。

欢迎任何想法。

谢谢。

在 DataTable 的每一行上添加对 NULL 的显式检查。

以上

SqlServerClient BulkCopy.WriteToServer table t does not allow null values in column c

标签: c#sql-server

解决方案


推荐阅读