0

DataAdapter1.Update()メソッドを介してデータセットdsStaff1に新しい行を挿入しています。次のエラーが発生します。

列'Enabled'、テーブル'dbo.tblStaff'に値NULLを挿入できません。列はnullを許可しません。INSERTは失敗します。ステートメントは終了されました。

tblStaffにブールフィールド「Enabled」があります。これは、SQLServerのキーワードだと思います。デフォルトは「True」です。フィールドの名前を実際に変更することはできません。回避策はありますか?または私は何か間違ったことをしていますか?PS:sqlcommandビルダーによって挿入、更新コマンドを生成しています。

4

3 に答える 3

1

デフォルトがある場合は、SQLコマンドビルダーがデフォルトをオーバーライドするためにNULL(DBNull.Value)を送信している必要があります。デフォルトは、次の場合にのみ適用されます。

  • INSERTで列の値を指定しない場合
  • または、キーワードDEFAULTを使用する場合

これらの2つの形式のいずれか:

--Enabled is not mentioned, will use default
INSERT (col1, col1) VALUES (col1, col2) 

--Enabled will use DEFAULT
INSERT (col1, col1, Enabled) VALUES (col1, col2, DEFAULT) 
于 2011-01-31T06:15:27.107 に答える
0

更新パラメーターでデータセットに固定値を渡すだけです

お気に入り

<asp:Parameter Name="col1" Type="boolean" DefaultValue="true"/>
于 2011-01-31T09:33:28.570 に答える
0

私のコード:. 更新時に失敗します。

        Dim dr As System.Data.DataRow

        dr = DsStaff1.Tables(0).NewRow()

        dr.BeginEdit()
        dr.Item("FirstName") = txtName.Text
        dr.Item("LastName") = txtSurname.Text

        dr.Item("StaffID") = txtStaffID.Text
        dr.Item("Enabled") = cbActive.Checked
        dr.EndEdit()
        DsStaff1.Tables(0).Rows.Add(dr)

        DataAdapter1.Update(DsStaff1)

また、DataAdapter1 で TableMappings を使用しています

        DataAdapter1.TableMappings.Add("Table", DsStaff1.Tables("tblStaff").ToString)

PS既存の行の更新と削除は正常に機能します。新しい行を挿入するだけでは機能しません。

于 2011-02-01T02:19:35.437 に答える