我有一個查詢代碼,我可以調用每次我需要從數據庫中獲取數據,我希望它是線程。不知道如何在一個線程中實現這個,所以我可以重用這段代碼,基本上,我希望這個代碼在一個線程中。我知道如何在線程內部創建一個簡單的數據庫查詢,但想要可重用的東西。任何人都可以指出我在哪裏可以找到這方面的例子,或者足夠提供一個例子嗎?螺紋德爾福ADO查詢
這裏是我的示例數據庫查詢:
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;
這是我如何調用上述功能的示例:使用帶parameterinformations數組
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;
爲什麼你想要一個線程?如果您只是想在查詢運行時執行其他操作,則可以使用異步查詢(無論如何,它都會在另一個線程上運行查詢)。 – Rob 2013-04-27 11:41:12
嗨羅布,感謝您的建議。但是我讀過一些地方,很多用戶在使用異步查詢時遇到了句柄和內存泄漏問題。 – 2013-04-28 01:00:30
我還沒有看到。我有自主的(Delphi)軟件,每次運行數週,不斷進行異步ADO查詢。我有一些其他的C++代碼,可以在運行時定期處理100000000個異步查詢。 – Rob 2013-04-28 11:05:48