我用AdoQuery连接Access数据库:procedure ThreadFun(lParam:integer);stdcall;
var i:integer;
begin
  with Form1 do begin  i:=1;
  while i<=100 do begin
      AdoQuery1.Edit;
      AdoQuery1.FieldValues['a']:=AdoQuery1.FieldValues['a']+1;
      AdoQuery1.Post;
      i:=i+1;
  end;
  Memo1.Lines.Append(inttostr(lParam)+':over');  end;end;procedure TForm1.Button1Click(Sender: TObject);
var tmp:DWORD;
begin
  CloseHandle(CreateThread(nil,0,@ThreadFun,Pointer(1),0,tmp));
  CloseHandle(CreateThread(nil,0,@ThreadFun,Pointer(2),0,tmp));
end;无论怎么改都会出错!分别用两个AdoQuery控件问题仍旧!分别用两个进程同时操作问题仍旧.
别告诉我用线程同步技术哈.如果两台机子同时操作一个数据库怎么解决?

解决方案 »

  1.   

    顺便问一下,SQL的数据库会不会也有这种问题?
      

  2.   

    就是要用线程同呀.可以做一个数据接口,运行在数据库所在的机子上,其它的程序的所有数据请求都通过它来进行.SQL SERVER不会有这种问题.关于线程同步看一下<WINDOWS核心编程>一书
      

  3.   

    谢谢大家的关注..SQL没有这个问题真是太好了.
      

  4.   

    如果涉及到同时操作数据库了,最好不要用Access
      

  5.   

    问题又来了.我用SQL同样出错,而以得到的结果也不对.!
      

  6.   

    同步问题任何数据库都存在。把query换成command改用update语句
      

  7.   

    用EXESQL提交SQL语句.CloseHandle(CreateThread(nil,0,@ThreadFun,Pointer(1),0,tmp));
    为什么要这样写.