2010-09-11 17 views
7

Delphi XE dbExpress tutorial w dokumentacji online wykorzystuje ApplyUpdates (-1):Czy należy używać ApplyUpdates (0) lub ApplyUpdates (-1)?

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

Niektóre źródła mówią jednak forum miałoby to zalety wykorzystania ApplyUpdates (0), a byłoby to powszechny błąd lub złe praktyki używać -1. Czy to prawda? A kiedy i dlaczego mam preferować 0 powyżej -1 jako wartość dla MaxErrors?

+0

To niesamowite, jak bardzo (zazwyczaj nie tak dobrze) korzystano z ApplyUpdates (-1), ponieważ ApplyUpdates (0) jest zwykle znacznie lepszy. –

Odpowiedz

9

-1 Pozwala zgłaszać nieograniczoną liczbę błędów, więc każda aktualizacja delty ClientDataSet zostanie wypróbowana.

0 Nie zawiera żadnych błędów, co oznacza, że ​​przy pierwszym niepowodzeniu wysiłek nie jest marnowany na próby aktualizacji.

-1 może być odpowiednie, jeśli masz wiele niepowiązanych zmian do przepompowania do bazy danych. Na przykład podczas pompowania zmian w trybie off-line w modelu aktówki. W tego typu scenariuszu aktualizacje mogą się nie udać, ponieważ w międzyczasie rekordy zostały zaktualizowane przez innych użytkowników, ale jeśli jedna aktualizacja zakończy się niepowodzeniem, nie powie nic lub nic o szansach na niepowodzenie innych aktualizacji. Byłoby zatem wygodniej pozwolić, aby każda aktualizacja była wypróbowana i odebrać raport o błędach, aby mogły zostać zaadresowane przez użytkownika.

0 prawdopodobnie lepiej nadaje się w sytuacjach, w których można przewidzieć, że jeśli jedna aktualizacja nie powiedzie się, wszystkie lub wiele innych aktualizacji w delcie również zawiedzie. Byłoby "nierozsądne", gdyby ClientDataSet spróbował innych aktualizacji, gdy prawdopodobieństwo ich niepowodzenia również jest wysokie. Muszę jednak przyznać, że trudno mi wymyślić scenariusz, w którym tak się stanie.

+0

Dzięki za szczegółową odpowiedź! Podczas lektury przychodzi mi do głowy jedna rzecz: iirc jest również różnica w "wycofywaniu", podczas gdy 0 nie wprowadza żadnych zmian w bazie danych, więc klient może być pewien, że nic złego się nie stało z bazą danych, popełnić "jak najwięcej" - lub coś w tym stylu. (Wciąż szukam zasobów online, które zawierały lepszy opis tej różnicy.) – mjn

+0

@Rjustin: -1 zobowiązanie się w miarę możliwości jest dość bezpiecznym zakładem. 0 nie popełniam czegokolwiek po porażce, jestem mniej pewna, ale tego właśnie mogłem się spodziewać ... :) –

Powiązane problemy