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