請問執行異動查詢(如:delete)該用 session 或是 thread 來達成同步才對呢? |
缺席
|
azurecloud
中階會員 發表:52 回覆:108 積分:92 註冊:2003-09-04 發送簡訊給我 |
各位先進好:
其實我的問題題目並不是很貼切,正確的說我是想請教大家有關 thread 中的 synchronize 的問題,若是將 Query 物件包在 thread 中,我想同步兩個以上的 Query 該是要 synchronize thread 物件的"本身"(instance)才對呀,但 synchronize 方法似乎只能 synchronize thread 物件中的其他 method (我想做的事是,例如一個班級的原始成績資料表,先把 90 分以上的挑出來,insert 到另一張資料表後,從原始資料表中 delete 掉,再找 80 分以上的,那如果我用同一個 session 或 thread 來執行的話,就要等找 90 分的 Query 完全跑完才能再跑下一個 Query,資料量一大的話很不經濟,那能不能像這樣
有點像 pipeline 的原理,我想可以節省程式執行的總時間
),我也找過站上的文章,在 jackkcg 大大所提供的 Delphi中實現多線程同步查詢 一文中,提到了將 Query 及 Datasource 物件當作參數傳入 thread 中,然後再 synchronize 另一個 thread 物件的方法 ---- 以下節錄 原始程式片斷 -------------------------------------------------------
procedure TThreadQuery.ConnectDataSource;
begin
FDataSource.DataSet := FQuery;{ 該方法在查詢結束後才調用 }
end; procedure TThreadQuery.Execute;{ 執行線程的方法 } ===> 能不能Synchronize(Execute)?
begin
try
FQuery.Open; { 打開查詢 }
Synchronize(ConnectDataSource);{ 線程同步 }
except
ShowMessage('Query Error'); { 線程異常 }
end;
end;
---- 以上節錄 原始程式片斷 -------------------------------------------------------
另外像 站長大人 領航天使放在 delphi 程式範例區的 用 Thread 進行 Query 的動作 一文,我也下載來研究過,但站長只用了一個 Query 物件。此外,我想我也把 session 和 thread 的觀念完全搞混了(我在想能不能對 session 做 synchronize),請各位先進指導我,或是告訴我該上那兒去找相關的文章,感激不盡。
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |