जस्की के अनुरोध के अनुसार, लापता बिंदुओं को और जोड़ने के लिए
SQLiteडेटाबेस फ़ाइल डेटाबेस फ़ाइल में संग्रहीत है ।
कैच कंस्ट्रक्टर है
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
इसलिए जब डेटाबेस हेल्पर कंस्ट्रक्टर को name(द्वितीय परम) के साथ बुलाया जाता है , तो प्लेटफ़ॉर्म यह चेक करता है कि डेटाबेस मौजूद है या नहीं और यदि डेटाबेस मौजूद है, तो उसे डेटाबेस फ़ाइल हेडर से संस्करण की जानकारी मिल जाती है और सही कॉल बैक ट्रिगर हो जाता है
जैसा कि पहले से ही पुराने उत्तर में समझाया गया है, अगर नाम वाला डेटाबेस मौजूद नहीं है, तो यह ट्रिगर हो जाता है onCreate।
नीचे विवरण onUpgradeउदाहरण के साथ मामले की व्याख्या करता है ।
कहते हैं, आपके पहले संस्करण के पास कंस्ट्रक्टर पासिंग संस्करण के साथ DatabaseHelper(विस्तारित SQLiteOpenHelper) था 1और तब आपने नए स्रोत कोड के साथ एक उन्नत एप्लिकेशन प्रदान किया था 2, जिसके बाद संस्करण बन गया , जब स्वचालित रूप से DatabaseHelperइसका निर्माण हो जाता है , तो onUpgradeफ़ाइल को पहले से मौजूद प्लेटफ़ॉर्म ट्रिगर से पहले ही मौजूद है, लेकिन संस्करण वर्तमान संस्करण से कम है जिसे आपने पास किया है।
अब आप कहते हैं कि आप db संस्करण के साथ अनुप्रयोग का तीसरा संस्करण देने की योजना बना रहे हैं 3(db संस्करण तभी बढ़ाया जाता है जब डेटाबेस स्कीमा को संशोधित किया जाना है)। इस तरह के वृद्धिशील उन्नयन में, आपको एक बेहतर रखरखाव योग्य कोड के लिए प्रत्येक संस्करण से उन्नयन तर्क को लिखना होगा
उदाहरण छद्म कोड नीचे:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(oldVersion) {
case 1:
//upgrade logic from version 1 to 2
case 2:
//upgrade logic from version 2 to 3
case 3:
//upgrade logic from version 3 to 4
break;
default:
throw new IllegalStateException(
"onUpgrade() with unknown oldVersion " + oldVersion);
}
}
breakमामले में गुम बयान पर ध्यान दें 1और 2। वृद्धिशील उन्नयन से मेरा यही अभिप्राय है।
कहें कि क्या पुराना संस्करण है 2और नया संस्करण है4 , तो तर्क डेटाबेस 2को 3और फिर से अपग्रेड करेगा4
पुराने संस्करण है 3और नया संस्करण है 4, यह सिर्फ के लिए उन्नयन तर्क चलेंगे 3को4