对Access数据库的并发(异步)访问控制和测试

本文介绍了如何实现对Access数据库并发(异步)访问的控制,通过生成连续整数来模拟并发操作,详细阐述了操作过程和并发控制机制,并提供了测试方法。测试过程中,多应用程序间隔1秒执行生成操作,确保数据一致性。源代码可在链接中获取。
摘要由CSDN通过智能技术生成

现实工作中有时会需要对Access数据库进行并发(异步)访问。比如,如果有多台打印机同时打印发票,发票号码是从Access数据库中取得的。由于不应重复使用发票号码,所以取发票号码这个操作需要并发(异步)控制。

在这里,我用 生成连续的整数 来代替 需要并发(异步)控制的操作(比如,取发票号码)。

存储连续整数的表:temp1(co1 int)

并发(异步)控制使用的表:exclude(GenerateID varchar(50),AutoGrowID int identity(1,1) primary key)

AutoGrowID是自动编号列

生成连续整数的过程是:

首先,获得权限。

插入表 exclude 一行数据,得到该行的 AutoGrowID 值(记为insertID)。得到表 exclude 中最小的 AutoGrowID 值(记为minID)。
当 insertID == minID 时,即获得权限。

然后,生成连续的整数。得到表 temp1 的最大 col1 值(记为maxValue)。将 maxValue+1 插入到 temp1 中。

最后,删除开始时在表 exclude 中生成的行。

说明:获得权限时,需要通过循环来等待插入的 insertID 成为最小值。在循环的过程中我加入了一段延迟时间。如果不加延迟,当并发数目

大时(比如5个以上),就容易出现程序错误。

测试的过程是:

平均每隔一秒(0.5s的固定制+[0-1]s的随机值)执行一次 生成连续的整数 操作。

同时打开多个应用程序(10个左右),点击开始,就可以测试了。


可以通过查看数据库中两个表的数据和测试程序显示的数据来来验证结果。表 temp1 中的值应该是连续的。
所用应用程序退出后exclude表应为空。源代码: http://download1.csdn.net/down3/20070614/14182137996.rar

获得权限的代

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值