无法将值NULL插入“UserId”列

时间:2013-03-11 19:10:43

标签: c# sql-insert sqldatasource

我收到此异常,无法找出原因: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();
}

3 个答案:

答案 0 :(得分: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

插入执行它所说的内容 - 在表格中插入新记录。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

UserIdLabel.Text = userGuid.ToString();