2015/11/30

dbExpress (DBX4) 智慧取得 MetaData 方法研究


使用了 dbExpress 後,一直沒有機會詳細體驗。

自從寫了【dbExpress SetSchemaInfo 取得結構的勘誤之處】這篇之後,終於有點進展了。 把可能的呼叫法全上了一遍,成果如下圖:




兩種寫法有好有壞,但效能上是相等的,所以要使用哪種方式完全是看個人習慣。

===== 2022/03/02 更新 =====

操作說明

資料庫所有的表格清單(Table List)

在程式啟動時,會連線到指定資料庫,連線成功後會把資料庫裡所有表格放入上圖紅框處。

取得索引清單 (Indexes List)

選定表格時,程式會將該表格所有索引都放入上圖紅框處。

選好索引後,就可以使用畫面下半部的功能查詢其 MetaData。

程式說明

把原本參考 DBXUtils.pas 單元的程式碼改由 Dbexpress.MSSQL.Factory 單元處理,使用起來更物件導向,程式碼更加精簡:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
procedure TForm2.btnCRPrimaryKeyColumnsClick(Sender: TObject);
var
  p_Start, p_Cost : DWORD;
begin
  p_Start:=GetTickCount();
  with TDBXMSSQLFactory.Create(cn.Params) do
  begin
    Memo1.Lines.CommaText := DBXFetchPrimaryKeyColumns(cbxTableName.Text);
    Free;
  end;
  p_Cost:=GetTickCount()-p_Start;
  OutputDebugString(PWideChar('spend time: '+format('%0.3n',[p_Cost/1000])+'s'));
end;

使用 TDBXFactory (TDBXMSSQLFactory) 物件,就可以用【DBXFetchPrimaryKeyColumns】一列命令完成載入,不用再尋找資料庫命令,未來相關的 TDBXMySQLFactory、TDBXPostgreSQLFactory 也不用改程式碼即可使用,等有空再來增加其單元。

MetaData 在 DataSnap 應用場合下是絕對會用到的資料,有 DBXFactory 的幫忙,有助於更精準的控制程式碼的操作。

有興趣的朋友歡迎使用文末連結下載原始碼使用。

 和你分享 😉


See Also