错误:无法将值NULL插入列'ID'

时间:2016-12-27 04:30:01

标签: c# sql-server identity-insert

我创建了一个注册页面,我有一个带有主键ID的表,但是我收到此错误: enter image description here

  

无法将值NULL插入列'Id',表中   'd:\课程学习\动态网站设计\课程设计1 \ APP_DATA \ REGISTRATION.MDF.dbo.Table';柱   不允许空值。 INSERT失败。声明已经终止。

我刚开始学习C#而且真的不知道如何解决这个问题。

这是我的代码。

afterJob(JobExecution jobExecution)

3 个答案:

答案 0 :(得分:1)

数据库表的

Id属性不是自动生成的,因此它需要一个值,但在插入过程中不提供它。因此,要么自动生成Id属性标识,要么在插入期间提供值。例如,给予Id 1

string insertQuery = "insert into [Table] (Id,UserName,Email,Password) values (@id,@Uname,@email,@password);";
SqlCommand com = new SqlCommand(insertQuery, conn);
com.Parameters.AddWithValue("@id",1);
com.Parameters.AddWithValue("@Uname",TextBoxUN.Text);
com.Parameters.AddWithValue("@email", TextBoxEmail.Text);
com.Parameters.AddWithValue("@password", TextBoxPass.Text);

答案 1 :(得分:1)

错误说明了一切,

您正在尝试将数据插入表中,并且您的表的列为“id”,这是一个主键。作为主键的列不能保留null,这就是您收到此错误的原因

从代码中插入唯一ID或为列ID设置自动生成,设置自动生成将自动为每个新记录插入is,这将解决您的问题。

答案 2 :(得分:0)

  

首先,我要感谢你为格式良好的第一篇文章,   然后使用参数化查询。

当我们查看错误时,这意味着[id]中的[Table]列会被设置为非空但不是自动增量。因此,您应该为该列提供一个值以插入一行。你可以通过两种方式解决这个问题:

  • 将该字段更改为自动增量列;您可以使用alter命令通过使用以下查询将id字段修改为autoIncrement:

     ALTER TABLE [Table] MODIFY [ID] INT IDENTITY
    
  • 或者通过在插入查询中为该列指定值,在这种情况下,查询将如下所示:

    string insertQuery = "insert into [Table] (Id,UserName,Email,Password) values (id,@Uname,@email,@password);";