delphithread-safetyadodelphi-7adoconnection

Is Delphi's TADOConnection thread-safe?


I'm writing a Delphi 7 application which needs to access the same SQL Server database from many different threads simultaneously.

Can I use a single shared TADOConnection, or must each thread create their own?


Solution

  • Blorgbeard, you must create, initialize and open a separate TAdoconnection instance for each of your threads.

    ADO is a COM-based technology. It uses apartment-threaded objects ,don't forget to call CoInitialize(nil).

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