Является ли TADOConnection от Delphi поточно-ориентированным? - PullRequest
9 голосов
/ 07 августа 2009

Я пишу приложение Delphi 7, которому требуется доступ к одной и той же базе данных SQL Server из множества разных потоков одновременно.

Могу ли я использовать один общий TADOConnection или каждый поток должен создать свой собственный?

Ответы [ 2 ]

18 голосов
/ 07 августа 2009

Blorgbeard, вы должны создать, инициализировать и открыть отдельный Экземпляр TAdoconnection для каждого из ваших потоков.

ADO - это технология на основе COM. Он использует жилые объекты, не забудьте позвонить CoInitialize (ноль).

procedure TMyThread.Execute;
begin
   CoInitialize(nil);
   try
     try
       // create a connection here
     except
     end;
   finally
     CoUnInitialize;
   end;
end;
9 голосов
/ 07 августа 2009

Нет, это не так. ADO - это технология на основе COM. Он использует многопоточные объекты, поэтому вы не можете использовать соединения ADO через границы потоков. Каждый поток нуждается в своем собственном соединении.

...