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

发布于 2024-10-15 01:48:07 字数 306 浏览 6 评论 0原文

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

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

我在 tblStaff 中有一个布尔字段“Enabled”,我想这是 SQL Server 中的关键字。它默认为“True”。我真的无法更改该字段的名称。有解决办法吗?或者我做错了什么? PS:我正在通过 sqlcommand 生成器生成插入、更新命令。

I am inserting a new row into a dataset dsStaff1 via DataAdapter1.Update() method.
I am getting the following error:

Cannot insert the value NULL into
column 'Enabled', table
'dbo.tblStaff'; column does not allow
nulls. INSERT fails. The statement has
been terminated.

I do have a boolean field 'Enabled' in tblStaff, which is keyword in SQL Server I suppose. It is defaulted to 'True'. I can't really change the name of the field. Is there a work around? OR am I doing something wrong?
PS: I am generating insert, update commands by an sqlcommand builder.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

遗失的美好 2024-10-22 01:48:07

如果您有默认值,则 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) 

If you have a default, then your SQL Command builder must be sending NULL (DBNull.Value) to override the default. The default will apply only if:

  • if you don't specify a value for the column in the INSERT
  • or if you use the keyword DEFAULT

One of these 2 forms:

--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) 
如果没有 2024-10-22 01:48:07

只需在更新参数中将固定值传递给数据集,

例如

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

just pass a fixed value to the dataset in the update parameters

like

<asp:Parameter Name="col1" Type="boolean" DefaultValue="true"/>
晨光如昨 2024-10-22 01:48:07

我的代码:.更新失败。

        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 中使用

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

TableMappings更新和删除现有行效果很好。只是插入新行是行不通的。

My code:. It fails on 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)

Also I am using TableMappings in DataAdapter1

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

P.S. Updating and deleting an existing row works fine. It is just inserting a new row doesn't work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文