2009-08-06 39 views
9

Tôi đang viết một ứng dụng Delphi 7 cần truy cập cùng một cơ sở dữ liệu SQL Server từ nhiều luồng khác nhau cùng một lúc.TODOConnection của thread có an toàn không?

Tôi có thể sử dụng TADOConnection được chia sẻ duy nhất hay phải tạo từng chuỗi riêng của mình?

Trả lời

18

Blorgbeard, bạn phải tạo, khởi tạo và mở một cá thể TAdoconnection riêng biệt cho từng chủ đề của bạn.

ADO là công nghệ dựa trên COM. Nó sử dụng các đối tượng ren căn hộ, đừng quên gọi CoInitialize (nil).

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

Không, không phải. ADO là một công nghệ dựa trên COM. Nó sử dụng các đối tượng thread-threaded, do đó bạn không thể sử dụng các kết nối ADO trên các ranh giới thread. Mỗi thread cần kết nối riêng của nó.

Các vấn đề liên quan