使用了 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 的幫忙,有助於更精準的控制程式碼的操作。
有興趣的朋友歡迎使用文末連結下載原始碼使用。
和你分享 😉