我通过DataAdapter1.Update()方法将新行插入到数据集dsStaff1中。 我收到以下错误:
无法将值NULL插入 列'已启用',表格 'dbo.tblStaff';列不允许 空值。 INSERT失败。声明有 已被终止。
我在tblStaff中有一个布尔字段'Enabled',我认为这是SQL Server中的关键字。它默认为'True'。我无法真正改变该领域的名称。有工作吗?或者我做错了什么? PS:我正在通过sqlcommand构建器生成insert,update命令。
答案 0 :(得分:1)
如果您有默认值,则“SQL命令”构建器必须发送NULL(DBNull.Value)以覆盖默认值。默认设置仅适用于:
这两种形式中的一种:
--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。更新和删除现有行可以正常工作。它只是插入一个新行不起作用。