SQLiteOpenHelper
onCreate()
और onUpgrade()
जब डेटाबेस वास्तव में खोला जाता है तो कॉलबैक लागू होते हैं, उदाहरण के लिए getWritableDatabase()
पर कॉल करके . जब डेटाबेस हेल्पर ऑब्जेक्ट स्वयं बनाया जाता है तो डेटाबेस खोला नहीं जाता है।
SQLiteOpenHelper
डेटाबेस फ़ाइलों का संस्करण। संस्करण संख्या int
है कंस्ट्रक्टर को तर्क दिया गया। डेटाबेस फ़ाइल में, संस्करण संख्या PRAGMA user_version
. में संग्रहीत होती है ।
onCreate()
केवल तभी चलाया जाता है जब डेटाबेस फ़ाइल मौजूद नहीं थी और अभी बनाई गई थी। अगर onCreate()
सफलतापूर्वक लौटाता है (अपवाद नहीं फेंकता), डेटाबेस को अनुरोधित संस्करण संख्या के साथ बनाया गया माना जाता है। एक निहितार्थ के रूप में, आपको SQLException
को नहीं पकड़ना चाहिए onCreate()
में s स्वयं।
onUpgrade()
केवल तभी कहा जाता है जब डेटाबेस फ़ाइल मौजूद होती है लेकिन संग्रहित संस्करण संख्या कन्स्ट्रक्टर में अनुरोध से कम होती है। onUpgrade()
तालिका स्कीमा को अनुरोधित संस्करण में अद्यतन करना चाहिए।
कोड में टेबल स्कीमा बदलते समय (onCreate()
), आपको यह सुनिश्चित करना चाहिए कि डेटाबेस अपडेट किया गया है। दो मुख्य दृष्टिकोण:
-
पुरानी डेटाबेस फ़ाइल को हटा दें ताकि
onCreate()
फिर से चलाया जाता है। इसे अक्सर विकास के समय पसंद किया जाता है जहां आपके पास स्थापित संस्करणों पर नियंत्रण होता है और डेटा हानि कोई समस्या नहीं होती है। डेटाबेस फ़ाइल को हटाने के कुछ तरीके:-
एप्लिकेशन को अनइंस्टॉल करें। एप्लिकेशन मैनेजर या
adb uninstall your.package.name
. का उपयोग करें खोल से। -
एप्लिकेशन डेटा साफ़ करें। एप्लिकेशन मैनेजर का उपयोग करें।
-
-
डेटाबेस संस्करण को बढ़ाएं ताकि
onUpgrade()
आह्वान किया जाता है। यह थोड़ा अधिक जटिल है क्योंकि अधिक कोड की आवश्यकता है।-
विकास समय स्कीमा अपग्रेड के लिए जहां डेटा हानि कोई समस्या नहीं है, आप बस
execSQL("DROP TABLE IF EXISTS <tablename>")
का उपयोग कर सकते हैं अपने मौजूदा टेबल को हटाने के लिए औरonCreate()
. पर कॉल करें डेटाबेस को फिर से बनाने के लिए। -
जारी किए गए संस्करणों के लिए, आपको
onUpgrade()
. में डेटा माइग्रेशन लागू करना चाहिए ताकि आपके उपयोगकर्ता अपना डेटा न खोएं।
-