数据在其他地方更新时不会发生DBConcurrency异常

时间:2015-06-15 16:28:19

标签: c# mysql concurrency ado.net dataadapter

情况:

我在VS2013和.NET4.0中使用C#编写Winforms应用程序。

我有一个datagridview绑定到一个从MySQL表加载数据的dataadapter。 dataadapter SQL命令已手动构建,因为需要重新格式化以符合数据库上的日期和布尔处理。这是一个多用户环境,因此可以进行数据争用。因此,我在执行dataadapter.Update()时处理DBConcurrency异常。

为了测试,适配器已填充,绑定到dgv,然后我使用MySQLWorkbench delete 显示的行之一。如果我然后尝试更新dgv中的那行,则会正确抛出DBConcurrency异常。

问题:

但是如果我只使用MySQLWorkbench 修改行,那么通过dgv更新不会抛出DBConcurrency异常并且更新成功。因此,另一个用户可能做出的任何更新都会丢失。 (注意,我确保首先正确提交MySQLWorkbench更改!)

问题:

如果存在修改争用,如何获取DBConcurrency异常?

修改

这实际上是一个带标签的应用程序,其中包含许多链接到MySQL表的datagridviews。都有问题。一个非常简单的例子是"制造商"表包括:

maker_id    int(11)      not nullable auto-increment
maker_name  varchar(127) not nullable

SQL是通过代码生成的,并通过参数填充。通过datadapter.Update之前的调试器,我看到:

UPDATE maker SET maker_id = @maker_id, maker_name = @maker_name WHERE maker_id = @maker_id

0 个答案:

没有答案