这是在 Visual Basic 中使用 .mdb 数据库编写的,该数据库位于具有 oledb 连接的共享驱动器上。
假设我有一个包含以下 2 条记录的表:
|ID |NAME |CITY |
|2 |John Smith |Dallas |
|15 |Bob Johnson |New York |
由于 oledb 将表复制到本地数据集,然后将其发送回 db( data.tables("Test").Rows.Add
),如果 2 个人尝试同时在第 3 行槽中添加新记录,这会导致其中一条记录丢失吗?如果是这样,我该如何防止这种情况发生?
旁注:将无法编辑现有行,只能添加新行。
解决方法:所以我按照建议做了并设置了一个测试程序来循环并尝试更新数据库 100 次,尝试之间没有缓冲时间。我有两台电脑同时运行它。它确实导致其中一个程序在同一秒尝试更新时丢失了数据,但它也产生了错误。最后它很少发生,每次运行程序总共只产生大约 3 个错误。
由于我的程序主要是小规模的,我看不到为 MySQL 重写我的整个程序并将其设置在计算机上,因为我真的只想将数据库文件放在共享驱动器上。最后,如果出现错误,我可以通过在 catch 块中重新尝试更新来让它工作到没有数据丢失的地方。不是大规模生产的解决方案,但它非常适合我的目的。