我创建了一个注册页面,我有一个带有主键ID的表,但是我收到此错误: enter image description here
无法将值NULL插入列'Id',表中 'd:\课程学习\动态网站设计\课程设计1 \ APP_DATA \ REGISTRATION.MDF.dbo.Table';柱 不允许空值。 INSERT失败。声明已经终止。
我刚开始学习C#而且真的不知道如何解决这个问题。
这是我的代码。
afterJob(JobExecution jobExecution)
答案 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);";