2010-09-11 94 views
7

德爾福XE dbExpress tutorial聯機文檔中使用的ApplyUpdates(-1):我應該使用ApplyUpdates(0)還是ApplyUpdates(-1)?

// Client data set has provider do update. 
    ClientDataSet1.ApplyUpdates(-1); 

一些網上人士說,但它將有優勢,使用的ApplyUpdates(0),這將是一個普遍的錯誤或不好的做法使用-1。這是真的?何時以及爲什麼我應該比-1更喜歡0作爲MaxErrors的值?

+0

ApplyUpdates(-1)的使用(通常不是很好)增加了,因爲ApplyUpdates(0)通常好得多。 – 2010-09-12 08:58:36

回答

9

-1允許報告無限的錯誤,因此每次更新ClientDataSet的delta都會被嘗試。

0根本不允許任何錯誤,這意味着在第一次失敗後嘗試更新時不浪費任何努力。

-1可能是適當的,如果您有很多無關的更改泵送到數據庫。例如,在公文包模型中從離線使用中抽回更改時。在這種情況下,更新可能會失敗,因爲記錄同時已被其他用戶更新,但有一次更新失敗會說明其他更新失敗的機會很少或根本沒有。然後,讓每個更新都可以更方便地進行嘗試,並接收那些失敗的報告,以便用戶可以解決這些問題。

0如果一個更新失敗,則增量中的所有或許多其他更新也可能失敗,這可能更適合於這種情況。如果ClientDataSet失敗的可能性很高,讓ClientDataSet嘗試其他更新將是「愚蠢的」。必須承認,雖然我很難想出這種情況。

+0

感謝您的詳細解答!回想一下當我閱讀它時:iirc在'rollback'中也有區別,而0不會對數據庫提交任何更改,以便客戶端可以確保數據庫沒有發生任何錯誤,-1會盡可能地提交' - 或者類似的東西。 (我仍在搜索包含更好描述這種差異的在線資源。) – mjn 2010-09-11 14:05:12

+0

@mjustin:-1儘可能多的承諾是一個相當安全的選擇。 0在失敗時不作任何事情我不太確定,但這是我所期望的...... :) – 2010-09-11 14:34:37