TDataSetProvider 元件的設定
TDataSetProvider 元件的 UpdateMode 特性值會影響 TDataSetProvider 元件
產生什麼樣的 SQL 敘述來更新資料。在內定上 TDataSetProvider 元件的
UpdateMode 是 設 定 為 upWhereAll , 這 是 最 嚴 格 的 設 定 。
由於在尋找資料時也必須比對所有的欄位數值,所以是比較緩慢的更新方式。
把 UpdateMode 設定為 upWhereKeyOnly 那麼應用程式伺服器將會執行的
快一點。UpdateMode 設定為 upWhereKeyOnly 是表示當 TDataSetProvider 元
件在資料庫中尋找要被更新的資料時,是直接使用資料的索引值來搜尋資料
的。
當 TDataSetProvider 元件是使用它連結的資料集來更
新資料時,自動產生的 SQL 敘述是由資料集的設定值來控制的,
TDataSetProvider 元件的設定值不再有影響力
當ResolveToDataSet 特性是 False 時,TDataSetProvider 元件是自己產生更新資料的 SQL 敘述把異動的資料更新回資料庫,而當 ResolveToDataSet 特性是 True時,它則呼叫它連結的資料集元件把異動的資料更新回資料庫。
TDataSetProvider 元件自動產生的 SQL 敘述對於
一次異動的所有資料只會要求資料庫 prepare 一次 SQL 敘述。每次更新資料
時,只是代入不同的動態參數,這種執行方式非常的快速。
當 TDataSetProvider 元件使用資料集更新資
料時。對於每一筆更新的資料都會要求資料庫 prepare 一次 SQL 敘述。這比起
前面讓 TDataSetProvider 元件自動產生 SQL 敘述的方式來得非常沒有效率。
因為更新多筆資料時,每一筆資料的資料表綱要應該是一樣的,並不需要為相
同的 SQL 敘述準備 prepare 這麼多次。但是如果你仔細觀察使用資料集更新資
料時,它在更新之後,只會取回異動的資料,而不是像前面是取得所有的資
料。所以使用資料集更新資料的方式雖然在執行更新資料的 SQL 敘述比較沒
有效率,但是在從資料庫取得異動之後的資料卻是有效率的多了。
讓 TDataSetProvider 元件使用資料集元件更新資料,再配合執行已經
Prepare 好的 SQL 敘述會是最有效率的方式。可以考慮使用
另外的 TQuery 元件執行事先寫好的 SQL 敘述,並且在應用程式伺服器啟
動時先 prepare 這些 TQuery 元件的 SQL 敘述,並且在應用程式伺服器結
束時 UnPrepare 這些 TQuery 元件的 SQL 敘述。