请高手帮忙解决 更新数据表时,提示:违反并发性 的错误
本人初学(vb2010)+sqlite3,在窗体中使用treeview显示一个表里的数据,有一个字段treedata专门存放name(键值),并设为主健。代码如下:
dim salda_xmname As New SQLite.SQLiteDataAdapter
dim SQLconn_gldw As New Data.SQLite.SQLiteConnection '定义数据库链接对象
Dim constr As String = "data source=d:\23.db"
dim rowFind As DataRow
’在窗体的load中调入数据库
SQLconn_gldw.ConnectionString = constr '链接数据库
sqlcmd.Connection = SQLconn_gldw
salda_xmname = New SQLite.SQLiteDataAdapter("select * from xmname", SQLconn_gldw)
salda_xmname.Fill(ds, "xmname")
‘窗体中有一个按钮专门增加一个节点,同时,该表也插入一条记录,并写入专门的节点值(键值),单击treeview的TreeView1_AfterSelect事件后,执行一段代码
‘在另一个按钮控件中增加一条记录并赋值
Dim AddedRow As DataRow = ds.Tables("xmname").NewRow()
AddedRow("nodename") = cNewQyName
AddedRow("treedate") = QyKey
AddedRow("ico") = "xian"
AddedRow("icoed") = "xian1"
AddedRow("isover") = 0
’ 还有其它字段暂不赋值
ds.Tables("xmname").Rows.Add(AddedRow) ‘增加到记录中
’更新到表中
Dim cmdBuilder As New System.Data.SQLite.SQLiteCommandBuilder(salda_xmname)
salda_xmname.Update(ds, "xmname")
ds.Tables("xmname").AcceptChanges()
’这样做也没问题,能更新到表中,接下来:
‘点击TreeView1上刚增加的节点后,在TreeView1_AfterSelect事件中执行:
dim NodeNameKey As String= TreeView1.SelectedNode.Name '得到当前的节点name
rowFind = ds.Tables("xmname").Rows.Find(NodeNameKey) '在数据集的表xmname中定位到具有该键值的记录,treedata专门存放name(键值),并设为主健
’在窗体的另一个按钮中执行如下一段代码:
rowFind("nodename") = TbYqMc.Text ‘更改字段nodename的值为窗体中的一个文本框字段的值
‘这样做也没有问题
’接下来执行更新到表中的代码:
Dim cmdBuilder As New System.Data.SQLite.SQLiteCommandBuilder(salda_xmname)
salda_xmname.Update(ds, "xmname") 提示:违反并发性: UpdateCommand影响了预期 1 条记录中的 0 条”的数据库更新错误
ds.Tables("xmname").AcceptChanges()
本人百度了一下,说是自增字段的问题,也有说是没有主健的问题,我把自增字段删除了,主健也设置了,但还是没有解决问题。
请高手帮忙指点一下。
[此贴子已经被作者于2021-9-16 19:01编辑过]