2010-09-11 18 views
7

ऑनलाइन दस्तावेज में डेल्फी XE dbExpress tutorial का उपयोग करता ApplyUpdates (-1):क्या मुझे ApplyUpdates (0) या ApplyUpdates (-1) का उपयोग करना चाहिए?

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

कुछ ऑनलाइन स्रोतों हालांकि कहना है कि यह ApplyUpdates का उपयोग करने के फायदे के लिए होता है (0), और यह एक बड़े पैमाने पर गलती है या बुरा व्यवहार किया जाएगा -1 का उपयोग करने के लिए। क्या ये सच है? और MaxErrors के मान के रूप में मुझे कब और क्यों 0 से अधिक पसंद करना चाहिए?

+0

यह आश्चर्यजनक है कि (आमतौर पर इतना अच्छा नहीं) ApplyUpdates (-1) का उपयोग कैसे किया जाता है, क्योंकि ApplyUpdates (0) आमतौर पर बेहतर होता है। –

उत्तर

9

-1 असीमित त्रुटियों की रिपोर्ट करने की अनुमति देता है, इसलिए क्लाइंटडेटासेट के डेल्टा में प्रत्येक अपडेट की कोशिश की जाएगी।

0 कोई त्रुटि नहीं देता है, जिसका अर्थ है कि पहली विफलता के बाद अद्यतनों को आजमाने का कोई प्रयास बर्बाद नहीं हुआ है।

-1 उपयुक्त हो सकता है यदि आपके पास डेटाबेस के माध्यम से पंप करने के लिए कई असंबद्ध परिवर्तन हैं। उदाहरण के लिए जब ब्रीफकेस मॉडल में ऑफ़लाइन उपयोग से परिवर्तन वापस पंप करते हैं। इस प्रकार के परिदृश्य में, अपडेट विफल हो सकते हैं क्योंकि रिकॉर्ड को अन्य उपयोगकर्ताओं द्वारा पहली बार अपडेट किया गया है, लेकिन एक अपडेट विफल होने से अन्य अपडेट विफल होने की संभावनाओं के बारे में कुछ भी नहीं होगा। यह संभवतः हर अद्यतन की कोशिश करने और विफल होने वाले लोगों की एक रिपोर्ट वापस प्राप्त करने के लिए अधिक सुविधाजनक होगा ताकि उन्हें उपयोगकर्ता द्वारा संबोधित किया जा सके।

0 शायद उन स्थितियों में बेहतर अनुकूल है जहां यह काफी अनुमान लगाया जा सकता है कि यदि एक अपडेट विफल रहता है, तो डेल्टा में अन्य सभी अपडेट भी विफल हो जाएंगे। ClientDataSet उन अन्य अपडेटों को आजमाने के लिए "मूर्खतापूर्ण" होगा जब उनकी विफलता भी उच्च हो सकती है। हालांकि स्वीकार करना चाहिए कि मुझे एक परिदृश्य को सोचने में कठिन समय है जिसमें यह मामला होगा।

+0

विस्तृत उत्तर के लिए धन्यवाद! एक बात यह है कि मैं इसे पढ़ रहा हूं, जबकि मैं इसे पढ़ रहा हूं: आईआईआरसी में 'रोलबैक' में भी अंतर है, जबकि 0 डेटाबेस में कोई बदलाव नहीं करेगा, ताकि ग्राहक सुनिश्चित कर सके कि डेटाबेस के साथ कुछ भी बुरा नहीं हुआ, -1 जितना संभव हो उतना प्रतिबद्ध करें - या ऐसा कुछ। (मैं अभी भी उन ऑनलाइन संसाधनों की खोज कर रहा हूं जिनमें इस अंतर के लिए एक बेहतर विवरण शामिल है।) – mjn

+0

@mjustin: -1 जितना संभव हो सके उतना ही सुरक्षित शर्त है। 0 विफलता पर कुछ भी नहीं कर रहा है, मुझे कम यकीन है, लेकिन यह वही है जो मैं उम्मीद करता हूं ... :) –