2

我收到此异常,但无法弄清楚原因: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();
}
4

3 回答 3

3

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

例如,它应该如下所示:

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

根据评论编辑:

我将 UserId 列设置为主键和外键。我将 UserId 设置为 GUID。当我检查表格时,UserId 已经存在。我只想添加用户的名字或姓氏。

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

示例 SQL 命令可能类似于以下内容:

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

Insert 执行它所说的 - 向表中插入一条新记录。

于 2013-03-11T19:16:40.800 回答
2

您没有为 userId 列设置任何值。如果它已经被设置了身份。您可以在插入数据时删除用户 ID。

于 2013-03-11T19:28:51.973 回答
0

我只是抓住了用户 ID 并执行了更新命令。

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

UserIdLabel.Text = userGuid.ToString();
于 2013-03-30T03:03:43.347 回答