注册 登录
编程论坛 VB.NET论坛

请高手帮忙解决 更新数据表时,提示:违反并发性 的错误

yangmz 发布于 2021-09-16 18:55, 1185 次点击
本人初学(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编辑过]

1 回复
#2
yangmz2021-09-18 11:04
我发现,用datagridview显示一个数据表时,修改其中任意字段内容(除了主键没有改外),然后如下代码保存也会出现错误
 
   Dim cmdBuilder As New System.Data.SQLite.SQLiteCommandBuilder(salda_xmname)   
   salda_xmname.Update(ds, "xmname")          提示:违反并发性: UpdateCommand影响了预期 1 条记录中的 0 条”的数据库更新错误         
   ds.Tables("xmname").AcceptChanges()

这是怎么回事啊?
1