gpt4 book ai didi

database - 并发冲突 : the UpdateCommand affected 0 of the expected 1 records

转载 作者:太空狗 更新时间:2023-10-30 01:57:34 24 4
gpt4 key购买 nike

我在 Visual Basic Express Edition (winforms) 中设置了一个简单的 mdb 数据库,我正在尝试将数据从 datagridview 更新到数据库。我已经将文本框数据绑定(bind)到 datagridview 中我想要的列,这很好用。

经过一番努力,我终于设法更新了数据库每一行的值。但是,尝试修改新创建的记录会引发此错误:“并发冲突:UpdateCommand 影响了预期的 1 条记录中的 0 条”

我的意思是,似乎错误只发生在新创建的行上。因为关闭应用程序并立即重新打开它,所以我可以更新单元格的值。我还注意到,当我刚刚创建一个新行时,该行的 ID 设置为“-1”。其他行的 ID 没有负数。这可能是原因吗?似乎该行并未真正更新到数据库中。

这是 AddRow 按钮的代码

Dim newRow As MusicDBDataSet.SongsRow
newRow = MusicDBDataSet.Songs.NewSongsRow()
newRow.Name = txtBoxNewName.Text
newRow.Genre = txtBoxNewGenre.Text
newRow.Rhytm = txtBoxNewRhytm.Text
newRow.Length = txtBoxNewLength.Text
MusicDBDataSet.Songs.Rows.Add(newRow)

Try
Me.Validate()
Me.SongsTableAdapter.Update(Me.MusicDBDataSet.Songs)
Me.SongsBindingSource.EndEdit()
Me.MusicDBDataSet.Songs.AcceptChanges()

Catch ex As Exception
MsgBox(ex.Message)
End Try

这会将我放入文本框中的数据填充到 DataGridView 的新行中。一切看起来都很好(除了 ID 列的 -1 值)

数据绑定(bind)到数据库的文本框,这些是我用来尝试更新单元格值的文本框。代码如下所示:

Try
Me.Validate()
Me.SongsBindingSource.EndEdit()
Me.SongsTableAdapter.Update(Me.MusicDBDataSet.Songs)
Me.MusicDBDataSet.Songs.AcceptChanges()

Catch ex As Exception
MsgBox(ex.Message)
End Try

现在,我完全不确定这是否是正确的做法。但是仔细想想,用于更新新创建行的值的文本框是数据绑定(bind)到数据库或表适配器本身的,对吧?会不会是 UpdateCommand 失败了,因为还没有真正正确地创建该行?

最佳答案

我是这样解决的:

修改数据表后执行以下步骤。

dataTable = dataTable.GetChanges()

关于database - 并发冲突 : the UpdateCommand affected 0 of the expected 1 records,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1248537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com