c# - 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
解决方案
推荐阅读
- javascript - 使用 onkeydown 或 onkeyup 触发函数而不设置输入 Javascript
- java - 带插入的 AsyncCqlTemplate 缓存准备好的语句
- android - 与 SymmetricDS 服务器同步时,错误导致批处理失败,但未尝试加载批处理 000--9999 的数据
- angular - 将脚本添加到 Angular 中的组件视图
- angular5 - Angular5:Dygraph 未在运行时定义
- python - 使用 python pandas 查找特定行的所有日期
- java - Gson JSON 反序列化不适用于枚举
- apache2 - 重定向除 Apache 000-default.conf 中的一个以外的所有 url
- php - 更新 Mysql 中的图像
- angularjs - 在 angularjs 应用程序中的引导动态选项卡之间导航