【发布时间】: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