2012-11-24 5 views
7

मेरे पास एक ऐप है जिसमें 3 टेबल के साथ एक स्क्लाइट है। मेरी चिंता यह है कि, यदि मैं एक अद्यतन प्रस्तुत करता हूं जो एक और तालिका जोड़ता है (इसलिए यह 4 टेबल है) तो अद्यतन संस्करण डेटाबेस को मिटा देगा।अद्यतन के बाद SQLite डेटा रखना

बैकअप बैकअप/पुनर्स्थापित कैसे कर सकता है यह देखते हुए कि बैकअप अद्यतन से पहले होता है और अद्यतन के बाद पुनर्स्थापित करता है? अगर मैं आईओ (एसडी कार्ड की प्रतिलिपि और प्रतिलिपि प्रतिलिपि) का उपयोग कर करता हूं तो यह असफल हो जाएगा।

मैं शायद एक्सएमएल को डेटा निर्यात करने और मैन्युअल रूप से लोड करने के बारे में सोच रहा हूं। क्या कोई और तरीका है? यह कैसे करें इस पर कोई उदाहरण?

उत्तर

4

यदि आप बस एक नई तालिका जोड़ना चाहते हैं, तो अपने onUpgrade() विधि में ड्रॉप तालिका आदेशों पर टिप्पणी करें। आप onUpgrade() में कोड का पूरा नियंत्रण है तो यह सिर्फ किया जा सकता है:

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("CREATE TABLE ..."); 
} 

तकनीकी तौर पर आप भी डेटाबेस संस्करण को बढ़ाने के लिए की जरूरत नहीं है, जब भी आपके db की एक प्रति की पहुंच है तो आप अपने स्टेटमेंट बनाएं निष्पादित कर सकते हैं ।

+0

ओह अरे! मैंने इसके बारे में क्यों नहीं सोचा! धन्यवाद। लेकिन मेरा सवाल अभी भी है, मैं बैक अप कैसे ले सकता हूं। आइए उपयोगकर्ता को डीबी बैकअप लें, ऐप को अनइंस्टॉल करें, नया अपडेट किया गया ऐप डाउनलोड करें और फिर फैसला करें कि वह बैक अप फ़ाइल लोड करना चाहता है। मैं उसे कैसे प्राप्त कर सकता हूं? मुझे नहीं लगता कि सरल आईओ कॉपी – Snake

+1

काम करेगा एक SQLite डेटाबेस सिर्फ एक नियमित फ़ाइल है, इसलिए आप इसे केवल एसडी कार्ड या यहां तक ​​कि मौजूदा डेटाबेस के समान फ़ोल्डर में कॉपी कर सकते हैं। [यहां एक उदाहरण है] (http://stackoverflow.com/q/2170031/1267661)। – Sam

+0

मुझे लगता है कि आप मेरी बात याद कर चुके हैं। आइए कहें कि मेरे पास डीबी का संस्करण 1 है जिसमें 3 टेबल हैं। मैंने इसे एसडी कार्ड में कॉपी किया। उपयोगकर्ता को डीबी के संस्करण 2 में अपग्रेड किया गया जिसमें 4 टेबल हैं। अब यदि आप एसडी से डीबी फाइल को वापस कॉपी करते हैं, तो आपने संस्करण 1 को मजबूर किया है, हालांकि कोड इसे संस्करण 2 के रूप में पेश करेगा। समस्या देखें, मैं एक ही टेबल पर डेटा निर्यात और आयात करने में सक्षम होने का कोई तरीका चाहता हूं, अतिरिक्त टेबल हैं या – Snake