插入新行时数据集更新失败

时间:2011-01-31 01:50:03

标签: sql-server dataset dataadapter sqlcommandbuilder

我通过DataAdapter1.Update()方法将新行插入到数据集dsStaff1中。 我收到以下错误:

  

无法将值NULL插入   列'已启用',表格   'dbo.tblStaff';列不允许   空值。 INSERT失败。声明有   已被终止。

我在tblStaff中有一个布尔字段'Enabled',我认为这是SQL Server中的关键字。它默认为'True'。我无法真正改变该领域的名称。有工作吗?或者我做错了什么? PS:我正在通过sqlcommand构建器生成insert,update命令。

3 个答案:

答案 0 :(得分:1)

如果您有默认值,则“SQL命令”构建器必须发送NULL(DBNull.Value)以覆盖默认值。默认设置仅适用于:

  • 如果未在INSERT
  • 中指定列的值
  • 或者如果您使用关键字DEFAULT

这两种形式中的一种:

--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) 

答案 1 :(得分:0)

只需将固定值传递给更新参数

中的数据集

喜欢

<asp:Parameter Name="col1" Type="boolean" DefaultValue="true"/>

答案 2 :(得分:0)

我的代码:它在Update上失败。

        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)

P.S。更新和删除现有行可以正常工作。它只是插入一个新行不起作用。