代码之家  ›  专栏  ›  技术社区  ›  Blorgbeard

Delphi的TadoConnection线程安全吗?

  •  9
  • Blorgbeard  · 技术社区  · 16 年前

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

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

    2 回复  |  直到 16 年前
        1
  •  18
  •   RRUZ    16 年前

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

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

    procedure TMyThread.Execute;
    begin
       CoInitialize(nil);
       try
         try
           // create a connection here
         except
         end;
       finally
         CoUnInitialize;
       end;
    end;
    
        2
  •  9
  •   Remy Lebeau    16 年前

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