问题:
1。在一个线程中,通过串行口不断地得到数据,也就是采用死循环来得到数据,然后根据不同的情况存入相应的access文件中,比如data1.mdb,data2.mdb,...,data10mdb。该功能在后台实现,从程序启动到结束都在运行。2。在前台桌面界面操作时,要选择其中的一个数据库文件,比如data2.mdb,读出数据来显示,有可能进行修改,然后把修改的数据写人数据库文件data2.mdb中。但是我担心在写入时可能会出现在第1条中不断写入的操作中也刚好往数据库文件data2.mdb写人,从而冲突了。希望后台循环写入数据和前台桌面对数据库的操作不冲突,如何解决呀?具体一点。本人为初学者,刚刚学delphi不到2个月,谢谢!
1。在一个线程中,通过串行口不断地得到数据,也就是采用死循环来得到数据,然后根据不同的情况存入相应的access文件中,比如data1.mdb,data2.mdb,...,data10mdb。该功能在后台实现,从程序启动到结束都在运行。2。在前台桌面界面操作时,要选择其中的一个数据库文件,比如data2.mdb,读出数据来显示,有可能进行修改,然后把修改的数据写人数据库文件data2.mdb中。但是我担心在写入时可能会出现在第1条中不断写入的操作中也刚好往数据库文件data2.mdb写人,从而冲突了。希望后台循环写入数据和前台桌面对数据库的操作不冲突,如何解决呀?具体一点。本人为初学者,刚刚学delphi不到2个月,谢谢!
用排它锁来控制
--设tb(A,B,C)
create table #tb(A varchar(2),B varchar(2),C varchar(2))
insert into #tb
select 'a1','b1','c1'
union all select 'a2','b2','c2'
union all select 'a3','b3','c3'
--在第一个连接中执行以下语句
begin tran
update #tb
set A='aa'
where B='b2'
//waitfor delay '00:00:3' --等待3秒
commit tran--在第二个连接中执行以下语句
begin tran
select * from #tb
where B='b2'
commit tran
--若同时执行上述两个语句,则select查询必须等待update执行完毕才能执行即要等待30秒你可以为写数据建立一个排它锁。