C# 在数据库中的gridview中插入复选框的选中值无效

C# 在数据库中的gridview中插入复选框的选中值无效,c#,html,asp.net,sql-server,C#,Html,Asp.net,Sql Server,请告诉我我做错了什么,因为我在互联网上尝试了一个月的所有可能的解决方案,但仍然没有成功。 我所要做的就是将复选框插入一个名为 预测试(idPrescTest int主键标识、测试nvarchar(50)、idPresc int) 但我收到了这样一条错误消息:“无法将值NULL插入到“idPresc”列、表“Project.dbo.PrescTest”中;列不允许为NULL。插入失败。” 这是我的密码: protected void Button1_Click1(object sender, Ev

请告诉我我做错了什么,因为我在互联网上尝试了一个月的所有可能的解决方案,但仍然没有成功。 我所要做的就是将复选框插入一个名为 预测试(idPrescTest int主键标识、测试nvarchar(50)、idPresc int)

但我收到了这样一条错误消息:“无法将值NULL插入到“idPresc”列、表“Project.dbo.PrescTest”中;列不允许为NULL。插入失败。”

这是我的密码:

protected void Button1_Click1(object sender, EventArgs e)
    {

        foreach (GridViewRow row in GridView1.Rows)
        {
            if ((row.FindControl("CheckBox1") as CheckBox).Checked)
            {
                SqlCommand cmd = new SqlCommand("insert into PrescTest (Test) values (@Test)", conn);
                cmd.Parameters.Add("Test", SqlDbType.NVarChar, 50).Value = row.Cells[2].Text;

                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();

                Response.Redirect("PrescForm.aspx");

            }
        }

    }

关于那个错误消息有什么不清楚的?idPresc列不允许NULL,并且不在insert语句中。稍微绕道…您应该在USING语句中包装连接和命令对象。按照这种编码方式,你将杀死你的连接池。至少他们已经通过@SeanLange参数化了该语句。刷新更改。您完全正确,但我需要在主表中插入IDDREC之前插入此已检查数据。我需要在填充处方表之前填充PRECEST表,是否有任何方法可以解决此问题?如果该列需要值,则必须提供值。这就是引用完整性的全部要点。如果方便的话,不要客气地索要价值。它会开始踢和尖叫,你没有给它一个价值,因为它需要一个。唯一的解决方法是使该列允许NULL,这将使您处于允许孤立数据的情况。也许你需要看看这个过程。关于这个错误消息有什么不清楚的?idPresc列不允许NULL,并且不在insert语句中。稍微绕道…您应该在USING语句中包装连接和命令对象。按照这种编码方式,你将杀死你的连接池。至少他们已经通过@SeanLange参数化了该语句。刷新更改。您完全正确,但我需要在主表中插入IDDREC之前插入此已检查数据。我需要在填充处方表之前填充PRECEST表,是否有任何方法可以解决此问题?如果该列需要值,则必须提供值。这就是引用完整性的全部要点。如果方便的话,不要客气地索要价值。它会开始踢和尖叫,你没有给它一个价值,因为它需要一个。唯一的解决方法是使该列允许NULL,这将使您处于允许孤立数据的情况。也许你需要看看这个过程。