问题:
1。在一个线程中,通过串行口不断地得到数据,也就是采用死循环来得到数据,然后根据不同的情况存入相应的access文件中,比如data1.mdb,data2.mdb,...,data10mdb。该功能在后台实现,从程序启动到结束都在运行。2。在前台桌面界面操作时,要选择其中的一个数据库文件,比如data2.mdb,读出数据来显示,有可能进行修改,然后把修改的数据写人数据库文件data2.mdb中。但是我担心在写入时可能会出现在第1条中不断写入的操作中也刚好往数据库文件data2.mdb写人,从而冲突了。希望后台循环写入数据和前台桌面对数据库的操作不冲突,如何解决呀?具体一点。本人为初学者,刚刚学delphi不到2个月,谢谢!

解决方案 »

  1.   

    我用ADO来做。是不是要搞个DM,把ADOConnection,ADOTable等放在一起来实现?
      

  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秒你可以为写数据建立一个排它锁。