返回首页

您好,

我有两个不同的表,这是在相同和不同的数据库也更新的问题。
当我使用下面的代码,它没有更新第二个表,说

concurrency violation the updatecommand affected 0 of the expected error
请注意,在下面的代码,我更新电网一列和更新数据库。

"mySymbolMastertable"表已经填充了变化。
请帮助...
{C}罢工?请帮助...

回答

评论会员:游客 时间:2012/02/06
dieforwhat:当你打电话的GetChanges(),你得到一个新的主表的更改的行副本(mySymbolMastertable)每个的GetChanges调用返回相同的表(dtSec),除非你改变mySymbolMastertable.AssigningdtSec到DT,什么也不做更新仍然可以致电dtSec.Copy()不更新为下一次更新获得的GetChanges(call.HasdtSecdtSec.Maybe在你的循环,你的问题已经解决)
|?dieforwhat:当您尝试更新如果另一个程序删除行或更改从数据库中的行,你可以不更新该行自排,你持有不是'一排表(在您的案件dtsec),但该行不存在于原始database.Simply ţDB匹配......要确保所有在第二个数据库。在dtsec行存在,可以读取使用乐观并发更新行Ado.Net乐观并发model.When的,你的价值相匹配数据库中的值(我的意思值是行中所有列,单元格的值)
评论会员:游客 时间:2012/02/06
aditri0502:如果你看到,mySymbolMastertable是正进行网格值的全局变量。mySymbolMastertabledatatbale表已更改的值。我循环,我们在配置文件中有熬过连接。每次循环,我创建一个新的数据集(dtSec=新集();)和:致电mySymbolMastertable.GetChanges(的)功能。dtsec=mySymbolMastertable.GetChanges()DT-dtsec分配(不是neccssary但这样做)在每个循环中,我创建新的实例化DataAdapter的连接和CommandBuilder的。DataAdapter的事件提出了一个表,但第二个表,要么是没有提出或提供并发错误的第一次
| dieforwhat:我无法找到你打电话mySQLConnectio.Open()
评论会员:?aditri0502 时间:2012/02/06
当我们使用CommandBuilder的使用DataAdapter的更新方法,所以连接会自动打开和关闭。

正如我所说,这是第一次更新,所以我认为连接是OK的。

请让我知道,如果你发现别的东西
评论会员:游客 时间:2012/02/06
后|dieforwhat:你叫myDataAdapter.Update()dtsec的行成为第二个表不变,没有什么更新......codeprelang="c#"DataTabledtsec=spanclass="code-keyword"new/spanDataTable();dtsec=mySymbolMastertable.GetChanges();/pre/code的在fo​​r循环线
aditri0502:因此,如果我们所说的GetChanges();方法,并在新的DataTable变化,使未来的时间,如果我们所说的GetChanges(),所以我们会得到什么?

如果你看到每一次,我越来越GetChage在新的DataTable(DT)和通过新表(DT)DataAdapter.Update方法。

请更正,如果我错了。

再次感谢...
评论会员:aditri0502 时间:2012/02/06
。..做dtSec.Copy()解决问题

是什么办法可以使用​​的AcceptChanges的GetChanges funtion?

复制功能复制所有数据,所以它是有点慢copare的GetChanges()
评论会员:的。aditri0502 时间:2012/02/06
。的DataTable的AcceptChanges()调用后更新解决的问题