2

この例外が発生し、理由がわかりません。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();
}
4

3 に答える 3

3

現在、テーブルを設定しているので、UserIdの値を指定する必要があります。それが意図した動作でない場合は、SQLサーバーの列を自動インクリメントに変更することをお勧めします...

たとえば、次のようになります。

[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

Insertは、それが言うことを実行します-テーブルに新しいレコードを挿入します。

于 2013-03-11T19:16:40.800 に答える
2

userId列には値を設定しません。すでにIDが設定されている場合。データを挿入するときにユーザーIDを削除できます。

于 2013-03-11T19:28:51.973 に答える
0

ユーザーIDを取得して、更新コマンドを実行しました。

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

UserIdLabel.Text = userGuid.ToString();
于 2013-03-30T03:03:43.347 に答える