用Delphi 開發資料庫程式經驗三則 (轉)
用Delphi 開發資料庫程式經驗三則 (轉)[@more@]1.建立臨時表
資料輸入是開發的必然環節。在Client/Server結構中,客戶端可能要輸入一批資料後,再向的後臺資料庫提交,這就需要在本地(客戶端)建立臨時資料表來輸入的資料,待提交後,清除本地表資料。這種方法的好處是:提高輸入,減小負擔。
由於使用者一次輸入的資料量一般情況下較小(不會超過幾百條記錄),所以臨時表可以建立在中,這樣處理速度較快。
方法1:使用查詢(TQuery)
第1步:在窗體上放上查詢控制元件(TQuery),設定好所連線的資料表。
第2步:使TQuery. CachedUpdates=True;
TQuery. RequestLive=True
第3步:在原有的語句後加入一條Where子語句,要求加入這條Where子語句後SQL查詢結果為空。
例如:
Biolife.″Species No″, Category, Common_Name, Biolife.″Species Name″, Biolife.″Length (cm)″, Length_In, Notes, Graphic
FROM ″biolife.″ Biolife
where Biolife.Category=′A′ and Biolife.Category=′B′
這樣臨時表就建立完成了。
方法2:使用程式碼建立臨時表
程式碼如下:
function CreateTableInMemory(const AFieldDefs:TFieldDefs):TDataSet;
var
TempTable:TClientDataSet;
begin
TempTable:=nil;
Result:=nil;
if AFieldDefs<>nil then
begin
try
TempTable:=TClientDataSet.Create(Application);
TempTable.FieldDefs.Assign(AFieldDefs);
TempTable.CreateDataSet;
Result:=(TempTable as TDataSet);
Except
if TempTable<>nil then
TempTable.Free;
Result:=nil;
raise;
end
end
end;
在程式中按如下方法使用:
procedure TForm1.Button1Click(Sender: T);
var
ADataSet:TDataSet;
begin
ADataSet:=TDataSet.Create(Self);
with ADataSet.FieldDefs do
begin
Add(′Name′,ftString,30,False);
Add(′Value′,ftInteger,0,False);
end;
with Data1 do
begin
DataSet:=CreateTableInMemory(ADataSet.FieldDefs);
DataSet.Open;
end;
ADataSet.Free;
end;
臨時表建立完成。
方法1使用簡單,但由於利用查詢控制元件,清空資料時需要查詢伺服器後臺資料庫,所以速度稍慢,而且不適用於臨時表中各個欄位由數個資料表的欄位拼湊而成的情況。方法2適用範圍廣、速度快,但需要編寫程式碼。(程式碼中TFieldDefs的使用方法十分簡單,見的聯機幫助)。
2.資料引擎(BDE、SQL Link)
有關資料庫程式分發時,需要攜帶資料引擎(BDE、SQL Link),並且在客戶端完程式後還需要配置資料引擎,如使用者名稱(username)、密碼(Pass)等等。如果手工配置的話,工作量比較大(根據客戶機數量而定)。而InstallShield For Delphi又好像沒有這方面的選項,其實InstallShield For Delphi可以做到,在生成安裝程式的目錄裡有一個*.iwz的文字,只要在[ID Alias]片段中手工加入即可。 例如:
[IDAPI Alias]
usesname=SYS
password=masterkey
安裝程式後資料引擎自動配置完畢。
3.在InterBase資料庫中使用
程式設計師可能在用InterBase作為後臺資料庫時,會為其提供的函式過少而感到不方便(只有四個),無法方便地編寫出複雜的。InterBase本身無法編寫函式,但它可以使用外部函式(DLL中的函式)。下例中說明如何在InterBase 中宣告SUBSTR函式。
DECLARE EXTERNAL FUNCTION SUBSTR
CSTRING(80), SMALLINT, SMALLINT
RETURNS CSTRING(80)
ENTRY_POINT ″IB_UDF_substr″ MODULE_NAME ″ib_udf″
其中:MODULE_NAME為DLL的名稱,ENTRY_POINT為函式名。
宣告後便可以使用,例如:
select SUBSTR(country)
from country
本例使用的是Delphi安裝時自帶的IBLocal資料庫。使用者也可以自己編寫函式來擴充InterBase
資料輸入是開發的必然環節。在Client/Server結構中,客戶端可能要輸入一批資料後,再向的後臺資料庫提交,這就需要在本地(客戶端)建立臨時資料表來輸入的資料,待提交後,清除本地表資料。這種方法的好處是:提高輸入,減小負擔。
由於使用者一次輸入的資料量一般情況下較小(不會超過幾百條記錄),所以臨時表可以建立在中,這樣處理速度較快。
方法1:使用查詢(TQuery)
第1步:在窗體上放上查詢控制元件(TQuery),設定好所連線的資料表。
第2步:使TQuery. CachedUpdates=True;
TQuery. RequestLive=True
第3步:在原有的語句後加入一條Where子語句,要求加入這條Where子語句後SQL查詢結果為空。
例如:
Biolife.″Species No″, Category, Common_Name, Biolife.″Species Name″, Biolife.″Length (cm)″, Length_In, Notes, Graphic
FROM ″biolife.″ Biolife
where Biolife.Category=′A′ and Biolife.Category=′B′
這樣臨時表就建立完成了。
方法2:使用程式碼建立臨時表
程式碼如下:
function CreateTableInMemory(const AFieldDefs:TFieldDefs):TDataSet;
var
TempTable:TClientDataSet;
begin
TempTable:=nil;
Result:=nil;
if AFieldDefs<>nil then
begin
try
TempTable:=TClientDataSet.Create(Application);
TempTable.FieldDefs.Assign(AFieldDefs);
TempTable.CreateDataSet;
Result:=(TempTable as TDataSet);
Except
if TempTable<>nil then
TempTable.Free;
Result:=nil;
raise;
end
end
end;
在程式中按如下方法使用:
procedure TForm1.Button1Click(Sender: T);
var
ADataSet:TDataSet;
begin
ADataSet:=TDataSet.Create(Self);
with ADataSet.FieldDefs do
begin
Add(′Name′,ftString,30,False);
Add(′Value′,ftInteger,0,False);
end;
with Data1 do
begin
DataSet:=CreateTableInMemory(ADataSet.FieldDefs);
DataSet.Open;
end;
ADataSet.Free;
end;
臨時表建立完成。
方法1使用簡單,但由於利用查詢控制元件,清空資料時需要查詢伺服器後臺資料庫,所以速度稍慢,而且不適用於臨時表中各個欄位由數個資料表的欄位拼湊而成的情況。方法2適用範圍廣、速度快,但需要編寫程式碼。(程式碼中TFieldDefs的使用方法十分簡單,見的聯機幫助)。
2.資料引擎(BDE、SQL Link)
有關資料庫程式分發時,需要攜帶資料引擎(BDE、SQL Link),並且在客戶端完程式後還需要配置資料引擎,如使用者名稱(username)、密碼(Pass)等等。如果手工配置的話,工作量比較大(根據客戶機數量而定)。而InstallShield For Delphi又好像沒有這方面的選項,其實InstallShield For Delphi可以做到,在生成安裝程式的目錄裡有一個*.iwz的文字,只要在[ID Alias]片段中手工加入即可。 例如:
[IDAPI Alias]
usesname=SYS
password=masterkey
安裝程式後資料引擎自動配置完畢。
3.在InterBase資料庫中使用
程式設計師可能在用InterBase作為後臺資料庫時,會為其提供的函式過少而感到不方便(只有四個),無法方便地編寫出複雜的。InterBase本身無法編寫函式,但它可以使用外部函式(DLL中的函式)。下例中說明如何在InterBase 中宣告SUBSTR函式。
DECLARE EXTERNAL FUNCTION SUBSTR
CSTRING(80), SMALLINT, SMALLINT
RETURNS CSTRING(80)
ENTRY_POINT ″IB_UDF_substr″ MODULE_NAME ″ib_udf″
其中:MODULE_NAME為DLL的名稱,ENTRY_POINT為函式名。
宣告後便可以使用,例如:
select SUBSTR(country)
from country
本例使用的是Delphi安裝時自帶的IBLocal資料庫。使用者也可以自己編寫函式來擴充InterBase
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988876/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Delphi實用程式設計經驗二則 (轉)程式設計
- Delphi實用程式設計經驗二 (轉)程式設計
- ORACLE資料庫開發經驗Oracle資料庫
- Oracle資料庫系統使用經驗六則(轉)Oracle資料庫
- ORACLE資料庫開發經驗總結Oracle資料庫
- 資料庫SQL開發命名規則 (轉)資料庫SQL
- Delphi資料庫程式設計教程(九) (轉)資料庫程式設計
- 用DELPHI開發DirectX遊戲 (轉)遊戲
- oracle資料庫開發的一些經驗Oracle資料庫
- Delphi趣味程式設計例項三則程式設計
- 規則引擎開發經驗分享 - reddit
- Linux程式應用開發環境和工具經驗談(轉)Linux開發環境
- 使用delphi開發人工智慧程式(參考資料)人工智慧
- Oracle資料庫學習應用:經驗分享Oracle資料庫
- 在DELPHI程式中使用ADO物件存取ODBC資料庫 (轉)物件資料庫
- Web開發經驗(1)防止MySQL資料庫誤更新/刪除WebMySql資料庫
- delphi連資料庫資料庫
- 大資料處理的開發經驗大資料
- DELPHI開發Web程式常見問題 (轉)Web
- 開發中三個經典的原則
- 創新性應用 資料建模經驗談(轉)
- 用設計模式開發通用資料庫操作器 (轉)設計模式資料庫
- 用Delphi編寫DelTree程式 (轉)
- Delphi與Word(三)取得Word檔案的資料 (轉)
- 三年開發程式設計師的職場經驗談程式設計師
- JDBC連線資料庫經驗JDBC資料庫
- 資料庫設計經驗談資料庫
- 大眾點評點餐小程式開發經驗 – 資料採集
- 大眾點評點餐小程式開發經驗 - 資料採集
- ORACLE應用經驗(4)-加密程式(轉)Oracle加密
- php開發中經常用到的正則驗證PHP
- 用DELPHI為ASP開發檔案上載元件 (轉)元件
- 用Delphi 6開發ASP上傳元件詳解 (轉)元件
- 資料庫綜合開發實踐 (轉)資料庫
- 用Delphi進行word開發
- 資料庫開發(21)高階應用開發資料庫
- 資料庫開發經典五例總結資料庫
- 小程式·雲開發 專案開發經驗分享