不能将值NULL插入列'UserId'

本文关键字:UserId 插入列 NULL 不能 | 更新日期: 2023-09-27 18:03:27

我得到这个例外,不能弄清楚为什么:Cannot insert the value NULL into column 'UserId'

这是我的代码:

<asp:TextBox ID="FirstNameBox" runat="server" />
<br />
<br />
<asp:TextBox ID="LastNameBox" runat="server" />
<asp:SqlDataSource
    ID="InsertText"
    runat="server"
    ConnectionString="<%$ ConnectionStrings:DefaultConnection %>"
    InsertCommand="INSERT INTO UserForm (UserId,FirstName,LastName) VALUES  (@UserId,@FiName,@LaName)">
   <InsertParameters>
      <asp:ControlParameter Name="FiName" ControlID="FirstNameBox" PropertyName="Text" />
      <asp:ControlParameter Name="LaName" ControlID="LastNameBox" PropertyName="Text" />
      <asp:Parameter Name="UserId" />
   </InsertParameters>
 </asp:SqlDataSource>

这是我在文件后面的代码:

public void button1_Click(object sender, System.EventArgs e)
{
   InsertText.Insert();
}

不能将值NULL插入列'UserId'

目前您已经设置了您的表,您必须为UserId提供一个值。如果这不是预期的行为,我建议将SQL server中的列更改为自动递增…

应该是这样的,例如:

[UserId]       INT            IDENTITY (1, 1) NOT NULL

根据注释编辑:

我将UserId Column设置为主键和外键。我设置了UserId作为GUID。当我检查表的UserId已经在那里。我只是想添加一个用户的姓或名。

不知道你的问题是什么,首先你在谈论INSERT,现在你在谈论为现有记录设置值。如果您想要update现有的记录,您需要先获得id并相应地更新值

一个SQL命令示例如下:

UPDATE UserForm SET FirstName = @FirstName, LastName = @LastName WHERE UserId = @UserId

则不为userId列设置任何值。如果已经设置了标识符。您可以在插入数据时删除userid。

我只是抓取了用户id并执行了一个更新命令。

Guid userGuid = (Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey;
UserIdLabel.Text = userGuid.ToString();