Veritabanından veri almak için gereken her zaman çağırabileceğim bir sorgu kodum var ve işlenmesini istiyorum. Bunu bir iş parçacığında nasıl uygulayacağımı bilmemek için, bu kodu yeniden kullanabilirim, temel olarak, bu kodu bir iş parçacığı içinde istiyorum. İş parçacığı içinde basit bir veritabanı sorgusu oluşturmayı biliyorum ama yeniden kullanabileceğim bir şey istiyorum. Birisi bana bunun için örnekler bulabileceğime ya da örnek verecek kadar nazik olabileceğime işaret edebilir mi?İş parçacıklı Delphi ADO Sorgu
İşte benim örnek veritabanı sorgusu:
function TDBConnection.SQLOpen(const SQLStr: String): TDataSet;
var
i: Integer
begin
try
Result := TADOQuery.Create(DBConnect.FDatabaseConection);
TADOQuery(Result).Connection:=DBConnect.FDatabaseConnection;
TADOQuery(Result).CommandTimeOut:=30;
TADOQuery(Result).SQL.Text := SQLStr;
TADOQuery(Result).Open;
except
end;
end;
Ve bu yukarıdaki işlevi çağırıyorum nasıl bir örnektir: yeniden kullanılabilirliği için
function TDBConnection.GetUserInfo: Boolean;
var
sqlStr: String;
Database: TDataset;
begin
sqlStr:= 'SELECT FIELD1, FIELD2, FIELD3 FROM TABLE1';
try
Dataset := SQLOpen(sqlStr);
if not Dataset.IsEmpty then
begin
//pass result to StringGrid
end;
finally
FreeAndNil(SQLParams);
FreeAndNil(Dataset);
end;
end;
Neden bir iş parçacığında istiyorsun? Sorgu çalışırken başka şeyler yapmak istiyorsanız, eşzamansız bir sorgu kullanabilirsiniz (sorguyu başka bir iş parçacığında çalıştırır). – Rob
Merhaba Rob, öneriniz için teşekkürler. ancak bir çok kullanıcının eşzamansız sorgu kullanırken kullandığı bellek ve bellek sızıntısı sorunları olduğunu bir yere okudum. –
Bunu görmedim. Ben sürekli bir zaman uyumsuz ADO sorguları yapıyor, haftalarca koşan otonom (Delphi) yazılımı var. Bir seferde düzenli olarak 100000000 async sorgusunu kontrol eden başka bir C++ kodum var. – Rob