Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将值NULL插入列';用户ID';_C#_Sql Insert_Sqldatasource - Fatal编程技术网

C# 无法将值NULL插入列';用户ID';

C# 无法将值NULL插入列';用户ID';,c#,sql-insert,sqldatasource,C#,Sql Insert,Sqldatasource,我遇到此异常,无法解释原因:无法将值NULL插入列“UserId” 这是我的代码: <asp:TextBox ID="FirstNameBox" runat="server" /> <br /> <br /> <asp:TextBox ID="LastNameBox" runat="server" /> <asp:SqlDataSource ID="InsertText" runat="server" Connecti

我遇到此异常,无法解释原因:
无法将值NULL插入列“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>

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

例如,它应该是这样的:

[UserId]       INT            IDENTITY (1, 1) NOT NULL
根据评论进行编辑:

我将UserId列设置为主键和外键。我设定了 UserId作为GUID。当我检查表时,用户ID已经存在 那里我只想添加一个用户的名字或姓氏

不确定您的问题是什么,首先您讨论的是
INSERT
,现在您讨论的是为现有记录设置值。如果要
更新现有记录,需要首先获取id并相应地更新值

示例SQL命令可能与此类似:

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

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

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

我刚刚获取了用户ID并执行了更新命令

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

UserIdLabel.Text = userGuid.ToString();

您的代码隐藏文件中必须有更多内容。。。例如,您在哪里声明您试图传递的参数?错误消息确实说明了这一切。该表要求您为UserID提供一个值,但您没有。您设置了Fname和Lname,但似乎没有设置UserID,因此出现了null异常。避免这种情况的最简单方法是自动递增一个唯一的非null UserID字段。除非您的用户ID是有意义的(employee#)。可能是因为数据库在表上有一个要求用户ID的约束(因此不能为空)…??我尝试使用UpdateCommand。我没有得到异常,但是表没有更新。
Guid userGuid = (Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey;

UserIdLabel.Text = userGuid.ToString();