2011-12-15 59 views
1

我在Delphi 7和PostgreSQL 9.0中工作,並在我的數據庫中有50個表。我有一種情況,我必須一次執行50多個更新查詢,每個表執行一次。如何優化使用Delphi(BDE組件)更新Postgres?

我有一個過程:

var 
sTheQuery : string; 
begin 
sTheQuery :='update diary set remark = replace(remark,'+#39+'%'+#39+', '$')'; 
QueryImages.SQL.Clear; 
QueryImages.SQL.Text:=sTheQuery; 
QueryImages.ExecSQL; 

sTheQuery :='update bioschema set note = replace(note,'+#39+'%'+#39+', '$')'; 
QueryImages.SQL.Clear; 
QueryImages.SQL.Text:=sTheQuery; 
QueryImages.ExecSQL; 
sTheQuery :='update displaymaps set region = replace(region, '+#39+'%'+#39+', '$')'; 
QueryImages.SQL.Clear; 
QueryImages.SQL.Text:=sTheQuery; 
    QueryImages.ExecSQL; 
sTheQuery :='update ecosystem set description = replace(description,'+#39+'%'+#39+', '$')'; 
QueryImages.SQL.Clear; 
QueryImages.SQL.Text:=sTheQuery; 
    QueryImages.ExecSQL; 

. 
. 
// total 50 times 
end; 

是這種方法的改進?:

var 
    sTheQuery : string; 
    begin 
    sTheQuery :='update diary set remark = replace(remark,'+#39+'%'+#39+', '$');'; 
    sTheQuery :=sTheQuery+'update bioschema set note = replace(note,'+#39+'%'+#39+', '$');'; 
    sTheQuery :=sTheQuery+'update displaymaps set region = replace(region, '+#39+'%'+#39+', '$');'; 
    sTheQuery :=sTheQuery+'update ecosystem set description = replace(description, '+#39+'%'+#39+', '$');'; 
    . 
    .//total 50 times 
    . 
    QueryImages.SQL.Clear; 
    QueryImages.SQL.Text:=sTheQuery; 
    QueryImages.ExecSQL; 
    end. 
+0

即時通訊使用BDE組件火查詢 – PresleyDias

回答

3

我會建議沒有。我想修改我的代碼,以創建一個接受查詢並處理它,像這樣的僞代碼的方法:

executeQuery(String sTheQuery) { 
    QueryImages.SQL.Clear; 
    QueryImages.SQL.Text:=sTheQuery; 
    QueryImages.ExecSQL; 
} 

doit() { 
    executeQuery('update diary set remark = replace(remark,'+#39+'%'+#39+', '$')'); 
    executeQuery('update bioschema set note = replace(note,'+#39+'%'+#39+', '$')'); 
    executeQuery('update displaymaps set region = replace(region, '+#39+'%'+#39+', '$')'); 
    executeQuery('update ecosystem set description = replace(description, '+#39+'%'+#39+', '$')'); 
} 

這是維護,易於閱讀和理解,它會執行可以接受。

+0

是多數民衆贊成很好維護,易於閱讀和理解件代碼 – PresleyDias

+0

Ÿ着的我把「@Bohemian」它只是在前看不見 – PresleyDias

+0

是 - 這有時會發生對我來說太 - ' @ name'消失。我沒有想出一個模式,當它沒有,也沒有 – Bohemian