0

这是在 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 块中重新尝试更新来让它工作到没有数据丢失的地方。不是大规模生产的解决方案,但它非常适合我的目的。

4

1 回答 1

0

首先,业内人士不使用 Access 是有原因的……简单来说,这是一个在 wikipedia 上读到的狗屎数据库。
我最好的选择是使用 MSSQL,它使事情变得更容易相信我,即使是通过网络(只要您向托管数据库的服务器的防火墙添加一个例外)。如果您不想偏头痛,请使用 MSSQL,然后再回来告诉我们情况如何。设置与在 VB 中为 Access db 设置相同的设置相当容易。
刚刚看到您找到了解决方法,希望这是一个持久的解决方案,您将在未来的项目中使用而不会出现问题

于 2013-08-13T04:55:23.820 回答