का उपयोग करते समय डेटाबेस को पुन: बनाएँ डेटाबेस में मेरा एंड्रॉइड ऐप एक SQLite डेटाबेस और सामग्री प्रदाता है। यह सामग्री प्रदाता ऐप के AndroidManifest.xml
में पंजीकृत है। यह निर्यात नहीं किया जाता है, इसलिए केवल मेरा ऐप इसे देख सकता है।सामग्री प्रदाता
उपयोगकर्ता की प्रोफ़ाइल को रीसेट करने के हिस्से के रूप में, मैं इस डेटाबेस को पूरी तरह से मिटा देना चाहता हूं और इसे स्क्रैच से फिर से बनाना चाहता हूं। सबसे पहले मैंने गतिविधि के संदर्भ से deleteDatabase()
पर कॉल करने का प्रयास किया। यह काम करता है, लेकिन केवल तभी जब ऐप बंद हो और बाद में फिर से खोल दिया जाए। अन्यथा जब मैं पंक्तियों को सम्मिलित करने का प्रयास करता हूं तो यह क्रैश हो जाएगा कि डेटाबेस केवल पढ़ने के लिए है। मेरी समझ यह है कि deleteDatabase()
पर कॉल करने से पहले कनेक्शन को बंद करने की आवश्यकता है। फिर भी, कनेक्शन सामग्री प्रदाता द्वारा प्रबंधित किया जाता है और जहां तक मैं समझता हूं, मैन्युअल रूप से बंद नहीं किया जाना चाहिए।
एक विकल्प के रूप में, मैं ContentResolver
से call()
विधि का उपयोग कर रहा हूं ताकि एक कस्टम फ़ंक्शन को कॉल किया जा सके जो तालिका में सभी डेटा हटा देगा और अनुक्रम गणना मैन्युअल रूप से रीसेट करेगा।
यह काम करता है, लेकिन अब मुझे मैन्युअल रूप से प्रत्येक तालिका से डेटा हटाना होगा और भविष्य में किए गए किसी भी बदलाव का ट्रैक रखना होगा।
मेरे DatabaseHelper
(SQLiteOpenHelper
) ट्रिगर की onCreate()
जब एक ContentProvider
का उपयोग कर पूरे डेटाबेस हटा सकते हैं और करने के लिए एक बेहतर तरीका है?
आप क्यों पुन: बनाना चाहते हैं और न केवल सभी सामग्री को हटाएं? –
@DiegoTorresMilano मुझे लगता है कि मैं बस प्रत्येक तालिका/पंक्ति को छोड़ने के बिना डेटाबेस को ताज़ा स्थिति में ताज़ा करने की कोशिश कर रहा हूं (इसलिए deleteDatabase को कॉल करने का प्रयास कर रहा हूं) और प्रारंभिक सेटअप प्रक्रिया को नए प्रोफाइल को फिर से कॉन्फ़िगर करने दें क्योंकि यह पहले चलाते हैं। वर्तमान में मैं डेटा की सभी पंक्तियों को हटा रहा हूं, अगर मैं डिलीटडेटा को कॉल करने के करीब कुछ था तो मैं उत्सुक हूं। – Programmer001
आपको अभी भी खोले जाने पर फ़ाइल को हटाने की कोशिश नहीं करनी चाहिए। –