【问题标题】:Cannot insert the value NULL into column 'UserId'无法将值 NULL 插入“UserId”列
【发布时间】:2013-02-27 02:28:29
【问题描述】:

我遇到了这个异常,不知道为什么: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 的值,而您没有提供该值。
  • 您设置了 Fname 和 Lname,但您似乎没有在任何地方设置用户 ID,因此出现空异常。
  • 避免这种情况的最简单方法是自动增加一个唯一的非空用户 ID 字段。除非您的用户 ID 有意义(员工编号)。
  • 可能是因为数据库对需要UserId的表有约束(因此不能为null)...???

标签: c# sql-insert sqldatasource


【解决方案1】:

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

它应该看起来像这样:

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

基于 cmets 编辑:

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

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

一个示例 SQL 命令可能如下所示:

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

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

【讨论】:

  • 我尝试使用 UpdateCommand。我没有收到异常,但表格没有更新。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多