ADO.NET SqlCommand:无法将值 NULL 插入列

Posted

技术标签:

【中文标题】ADO.NET SqlCommand:无法将值 NULL 插入列【英文标题】:ADO.NET SqlCommand: Cannot insert the value NULL into column 【发布时间】:2011-04-15 08:35:08 【问题描述】:
sCnd =  "INSERT INTO .dbo.Table(Col1, Col2, Col3) Values (1,2,3);

using (DbCommand tempCommand2 = CommandFactory.CreateCommand(db))

    tempCommand2.CommandText = sCmd;
    tempCommand2.ExecuteNonQuery();

表格还有一个不允许为空的 Col4。

错误:无法将值 NULL 插入 Col4 列

当我在 Management Studio 中执行 sCmd 时,一切正常。

为什么会出现异常?

【问题讨论】:

【参考方案1】:

表格还有一个不允许 null 的 Col4。

这就是你的答案。如果 Management Studio 仍然可以工作,它可能是在插入一个默认值?

【讨论】:

【参考方案2】:

您收到异常是因为您没有为 Col4 列插入值,这不允许 nulls 并且我只能假设没有默认值。

但您似乎问错了问题;您不是要问,为什么查询会在 SSMS 中运行?

我怀疑那个问题的答案会隐藏在你选择不包含的实际语法中的某个地方。

【讨论】:

【参考方案3】:

如果您没有为列指定值 NULL ,则除非有 constraint 另有说明。

由于 Col4 不允许 NULL 并且看起来它没有 defaultconstraint 这就是您收到错误的原因。

您没有显示您在 SSMS 中执行的 SQL,但我猜,不同的数据库(生产/开发),不同的表?

【讨论】:

您没有显示您在 SSMS 中执行的 SQL,但我猜,不同的数据库(生产/开发),不同的表?是的...:s

以上是关于ADO.NET SqlCommand:无法将值 NULL 插入列的主要内容,如果未能解决你的问题,请参考以下文章

ADO.NET_SqlConnection类,SqlCommand类,SqlDataReader类

Ado.net总结-Command(指挥官)

通过 C# 使用 ado.net 将值插入 SQL Server 数据库

如何在 SSIS 脚本组件中使用 OLEDB 连接执行 SqlCommand

Ado.NET SqlDataReader详解

ADO.net是啥?通过ADO. NET连接到数据库,提取数据,一般需要哪对象?