Каскадный Delphi ADO Query

У меня есть код запроса, который я могу вызывать каждый раз, когда мне нужно извлечь данные из базы данных, и я хочу, чтобы он был потоковым. Не уверен, как реализовать это в потоке, чтобы я мог повторно использовать этот код, в основном, я хочу этот код внутри потока. Я знаю, как создать простой запрос к базе данных внутри потока, но хочу что-то, что я могу использовать повторно. Может кто-нибудь указать мне, где я могу найти примеры для этого или быть достаточно любезным, чтобы привести пример?

Вот мой пример запроса к базе данных:

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;

И это пример того, как я вызываю вышеуказанную функцию:

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;

Ответы на вопрос(1)

Ваш ответ на вопрос