10

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

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

4

2 回答 2

20

Blorgbeard,您必须为每个线程创建、初始化和打开一个单独的 TAdoconnection 实例。

ADO 是一种基于 COM 的技术。它使用单元线程对象,不要忘记调用 CoInitialize(nil)。

procedure TMyThread.Execute;
begin
   CoInitialize(nil);
   try
     try
       // create a connection here
     except
     end;
   finally
     CoUnInitialize;
   end;
end;
于 2009-08-06T22:37:59.640 回答
10

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

于 2009-08-06T22:35:18.617 回答