这是使用带有oledb连接的共享驱动器上的.mdb数据库以visual basic编写的。
假设我有一张包含以下2条记录的表:
|ID |NAME |CITY |
|2 |John Smith |Dallas |
|15 |Bob Johnson |New York |
由于oledb将表复制到本地数据集然后将其发送回db(data.tables("Test").Rows.Add
),如果2个人尝试在第3行插槽中同时添加新记录,这将导致其中一个丢失的记录?如果是这样,我该如何防止这种情况?
备注:无法编辑现有行,只能添加新行。
解决方法:所以我按照建议做了并设置了一个测试程序来循环并尝试更新数据库100次,尝试之间没有缓冲时间。我有2台电脑同时运行它。当它试图在完全相同的秒内更新时,它确实导致其中一个程序的数据丢失,但它也产生了错误。最后它很少发生,每次运行只产生大约3个错误。
由于我的程序主要是小规模的,我看不到重写MySQL的整个程序并在计算机上进行设置,因为我真的只想在共享驱动器上使用数据库文件。最后,我能够通过在catch块中使用它来在没有数据丢失的地方工作,以便在出现错误时重新尝试更新。不是大规模生产的解决方案,但它很适合我的目的。
答案 0 :(得分:0)
首先,有一个原因是业内人士不使用Access ......简单来说,这是一个在维基百科上阅读的狗屎数据库。
我最好的选择是使用MSSQL让事情变得更容易信任我,甚至通过网络(只要你在托管数据库的服务器的防火墙上添加一个例外)。使用MSSQL,如果你不想让migrane头痛,那么回到我们身边告诉我们它是怎么回事。你在VB中为Access db设置的设置相当容易。
只是看到你找到了一个解决方案,让我们希望它是一个持久的解决方案,你将在未来的项目中使用而没有问题