Delphi的TADOConnection线程安全吗?

时间:2009-08-06 22:17:37

标签: delphi thread-safety ado delphi-7 adoconnection

我正在编写一个Delphi 7应用程序,它需要同时从许多不同的线程访问同一个SQL Server数据库。

我可以使用单个共享TADOConnection,还是每个线程都必须创建自己的?

2 个答案:

答案 0 :(得分:18)

Blorgbeard,你必须创建,初始化并打开一个单独的 每个线程的TAdoconnection实例。

ADO是一种基于COM的技术。它使用单元螺纹对象,别忘了打电话 CoInitialize的(无)。

procedure TMyThread.Execute;
begin
   CoInitialize(nil);
   try
     try
       // create a connection here
     except
     end;
   finally
     CoUnInitialize;
   end;
end;

答案 1 :(得分:9)

不,不是。 ADO是一种基于COM的技术。它使用单元线程对象,因此您不能跨线程边界使用ADO连接。每个线程都需要自己的连接。