情况:
我在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