不能将值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();
}
目前您已经设置了您的表,您必须为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();