【问题标题】:Cannot insert the value NULL into column 'UserId', table无法将值 NULL 插入“UserId”列中,表
【发布时间】:2012-08-02 08:36:19
【问题描述】:

尝试插入在我的 UPDATE SQL 语句下编辑的 cmets 用户时遇到此错误。由于我的 UserId 是一个 uniqueIdentifier,我真的不知道如何解决这个错误。

错误显示:

Cannot insert the value NULL into column 'UserId', table 

我的 .cs 代码是:

 int CommentID = int.Parse(ListView1.DataKeys[e.ItemIndex].Value.ToString());
    ListViewItem item = ListView1.Items[e.ItemIndex];
    TextBox Title = (TextBox)item.FindControl("Title");
    TextBox commentContent = (TextBox)item.FindControl("commentContent");

    string connectionString = ConfigurationManager.ConnectionStrings["ASPNETDBConnectionString1"].ConnectionString;
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        string sql = "Update Comments set Title = @Title, commentContent=@commentContent where CommentID = @CommentID";
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            cmd.Parameters.AddWithValue("@Title", TextBox1.Text.Trim());
            cmd.Parameters.AddWithValue("@commentContent", TextBox2.Text.Trim());
            cmd.Parameters.AddWithValue("@CommentID", CommentID);
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
        }
    }

【问题讨论】:

  • 您确定您发布了正确的代码吗?它显示一条更新语句,并且消息抱怨插入。桌上有什么触发器吗?
  • 我怀疑你在 cmets 表上有一个触发器,导致了这种情况。我猜你在 cmets 表上有一个 UserID 列,它允许 NULLS(并且至少有一个 NULL 值),而触发器插入的表在它的 UserID 列上有一个 NOT NULL 定义。

标签: c# asp.net sql


【解决方案1】:

我认为表中的 UserID 列具有 NOT NULL 约束。请检查您的表架构。

【讨论】:

  • 是的,我的 UserId 不为空。因为它是我 cmets 表中的外键。
【解决方案2】:

在我看来,UserID 有一个非空约束。检查你的数据库。

【讨论】:

    【解决方案3】:

    我认为UserId是你的外键,你必须定义一个外键

    评论包含UserId作为外键,必须设置UserId,因为key不能为空

    【讨论】:

      猜你喜欢
      • 2013-02-27
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 2012-11-08
      • 1970-01-01
      相关资源
      最近更新 更多