UniDAC使用教程(二) 資料更新

2021-09-10 08:30:26 字數 2590 閱讀 9540

universal data access components (unidac)是一款通用資料庫訪問元件,提供了多個資料庫的直接訪問,如針對windows的delphi, c++builder, lazarus (以及 free pascal) , mac os x, ios, android, linux和64和32位的freebsd等等。我們將長期的經驗集於這個小組件,提供統一的資料庫連線訪問(如oracle、微軟sql等等)。這意味著您可以在您的專案之間輕鬆地切換不同的資料庫,以及建立跨資料庫應用程式介面。

自動資料更新

tunitable, tuniquery和tunistoredproc是允許檢索和編輯資料的unidac元件。要編輯每個元件的資料,請在keyfields屬性中指定鍵欄位名稱。如果keyfields為空字串,則oracle、postgresql、interbase、sqlite和所有基於odbc的提供程式都將嘗試從傳送附加查詢的伺服器請求有關主鍵的資訊(這可能會對效能產生負面影響)。sql server和mysql提供程式將使用伺服器傳送的元資訊和資料。sql server提供程式具有uniquerecords選項,該選項允許在查詢中省略主鍵欄位時自動從表中請求主鍵字段。

如果要開啟的資料集沒有唯一標識記錄的字段,則可以通過伺服器的方式通過oracle、firebird 2.0、postgresql和sqlite伺服器來解決這個問題。對於oracle和sqlite伺服器,您應該將rowid列新增到查詢中。帶firebird 2.0 - db_key。如果您的表是使用oid建立的,那麼可以使用postgresql伺服器oid列作為關鍵字字段。

資料更新的擴充套件設定

對於具有來自多個表的資料的資料集,預設情況下只有乙個表是可更新的。您應該在updatingtable屬性中指定要更新的表名,否則屬於字段列表中第乙個欄位的表將是可更新的。如果setfieldsreadonly選項設定為true(預設情況下),則自動生成的更新sql語句中未使用的字段將標記為唯讀。對於複雜查詢(使用多個表、同義詞、dblinks、聚合欄位的語句),我們建議使用oracle、postgresql和所有基於odbc的提供程式啟用 extendedfieldsinfo 選項。

如果插入/發布、更新或重新整理記錄操作影響了多個記錄,unidac將引發異常。要禁止此類異常,應將strictupdate選項設定為false。

為了更靈活地控制資料修改,可以填充update-sql語句。它們由sqlinsert、sqlupdate、sqldelete和sqlrefresh 屬性表示,並在insert/post、edit/post、delete和refresh操作中自動執行。在設計時,可以在元件編輯器的「sql generator」選項卡上生成預設的更新sql語句。可以根據需要修改生成的語句。但是,如果為每個記錄動態生成更新查詢,則只有更改後的值才會傳送到伺服器。

對於某些特定情況,此功能不夠。它可以通過tuniupdatesql元件進行擴充套件。tuniupdatesql允許為每個更新操作關聯乙個單獨的tunisql/tuniquery/tunistoredproc元件。

快取更新

預設值/表示式

如果已經為資料庫表中的列定義了預設值或表示式,則可以設定unidac,以便它從伺服器請求這些表示式。這些表示式將分配給tfield物件的defaultexpression 屬性。如果已填充預設表示式值,則將替換這些值。此行為由預設值選項控制,預設情況下禁用該選項。

自動增量值生成

編輯資料集時,通常不方便手動填充關鍵字字段值,而是自動生成它們。有三種方法可以做到。

第一種方法,最有用的方法,是使用伺服器方法自動生成關鍵字字段值。

sql server、mysql和sqlite允許在表中定義自動增量列。這不需要在客戶機上進行額外的處理。對於sap sybase ase、oracle、postgresql和interbase提供程式,需要指定特定於keysequence(interbase的keygenerator)的選項。自動生成的值自動反映在資料集中。

第二種方法是在beforepost事件處理程式中生成並填充關鍵字字段值。通常,這種方式需要執行查詢以從伺服器檢索一些資訊。所以這種方法可能只在某些特定的情況下有用。

第三種方法是建立after insert觸發器,用適當的值填充字段。但返回觸發器生成的值時出現問題。儘管這個問題可以解決(見下一段),但這種方法被認為是非最優的。因此,如果可能,嘗試選擇另一種方法。

但是,可以使用特定於queryidentity的選項為sql server提供程式禁用檢索生成的值。這將提高記錄插入的效能。

及時獲取最新資料

在某些情況下,unidac允許自動重新整理資料集中的記錄,以使其值保持最新。

dmlrefresh選項允許在插入或更新後重新整理當前記錄,與refreshoptions類似,但其工作方式不同。這允許實現比重新整理選項更高的效能。基於mysql、sqlite和odbc的提供程式不支援dmlrefresh。

如果要控制插入或更新後需要重新整理當前記錄的哪些字段,應執行以下操作:在更新查詢中定義與資料集中欄位名稱對應的名稱的輸出引數,並將returnparams選項設定為 

true。執行更新查詢後,資料集讀取輸出引數的值,並將其放入具有相應名稱的字段中。

UniDAC使用教程(一) 連線到資料庫

universal data access components unidac 是一款通用資料庫訪問元件,提供了多個資料庫的直接訪問,如針對windows的delphi,c builder,lazarus 以及 free pascal mac os x,ios,android,linux和64和32...

Git基本使用教程(二) 獲取更新與推送更新

傳送門 git基本使用教程 一 入門及第一次基本完整操作 官方文件 git基礎 檢視遠端倉庫 切換至某一目錄,執行命令 如圖所示,我在git目錄下 包含兩個倉庫,dywhml,bysj 執行命令,將顯示config檔案中配置的倉庫位址。切換目錄至bysj,再看下效果 修改工作區檔案,進行add,st...

Git基本使用教程(二) 獲取更新與推送更新

檢視遠端倉庫 切換至某一目錄,執行命令 git remote show origin如圖所示,我在git目錄下 包含兩個倉庫,dywhml,bysj 執行命令,將顯示config檔案中配置的倉庫位址。切換目錄至bysj,再看下效果 修改工作區檔案,進行add,status,diff,commit,p...