C#错误消息:无法将值NULL插入列'Id

时间:2017-06-17 17:34:10

标签: c# visual-studio-2015

我开发了一个保存图片的程序。但我收到此错误消息:

  

无法将值NULL插入列'Id'

sides

2 个答案:

答案 0 :(得分:2)

在任何事情之前你应该检查你的表Bild的结构, 你可能有一个名为Id的列,它是约束,不能为空。

通过阅读您的代码,我无法在下一行看到您提供的代码,而且你的SQL:

cm.CommandText = "insert into Bild (FileName,Datei) values ('" + label1.Text.ToString() + "',@picture )";

接下来应该做的是:

  • 根据您的列类型(int,guid或其他类型)将id从您的代码发送到sql(创建变量并将其包含在insert命令中),因此如果您使用int,则应该增加您的变量,这将保留下一个值' Id'在您的数据库中,或者如果它是Guid,您应该使用Guid.NewGuid方法为每个新行创建新的Guid)
  • 在Sql上编辑id列并应用AUTO_INCREMENT关键字来执行自动增量功能,例如:

    更改表格Bild(     id int NOT NULL AUTO_INCREMENT,     列的其余部分 );

或者您可以应用后续步骤,以防您使用Microsoft SQL ,我想您这样做是因为我可以看到您在C#代码中使用了SqlCommand.CommandText属性

  

据推测,你正在设计这张桌子。如果没有:右键单击   表名 - "设计"。单击所需的列。在"列   属性" (在底部),滚动到"身份规范"   部分,展开它,然后切换"(是身份)"到"是"。   enter image description here

答案 1 :(得分:0)

我无法添加评论,所以我会在这里回答。 如果您的Id是主键,您可以自己插入它或使用标识选项(自动增量):

  1. 将标识选项添加到ssms的密钥中。如果您想通过查询来执行此操作,请按照此处给出的答案https://dba.stackexchange.com/questions/128433/add-autoincrement-to-existing-pk

  2. 插入语句中的
  3. 执行insert into Bild (Id,FileName,Datei) values ([your id], 'val1', 'val2')

  4. 注意:如果您的主键无法自行执行(自动增量),则必须指定要插入的ID