2010-10-14 18 views
10

मैंने मूल रूप से एक एंड्रॉइड ऐप विकसित करना समाप्त कर दिया है जो SQLite डेटाबेस का उपयोग करता है जिसे मैं डिवाइस पर उपयोगकर्ता डेटा क्षेत्र में कॉपी करता हूं जैसे /data/data/com.company.app/databases/users .dbएंड्रॉइड हैंडल ऐप अपडेट और डेटाबेस परिवर्तन

मुझे यकीन नहीं है कि मार्केटप्लेस ऐप अपडेट प्रक्रिया कैसे होती है और यह भी सुनिश्चित नहीं है कि मैं इसका परीक्षण कैसे कर सकता हूं।

मैं वर्तमान में यह देखना होगा कि डेटाबेस डिवाइस पर मौजूद है और इसे कॉपी अगर यह नहीं (आम तौर पर केवल पहले कभी लांच पर होता है) है। यदि मेरे अपडेट किए गए ऐप में डेटाबेस का नया संस्करण है तो क्या होगा? क्या मार्केटप्लेस अपडेट उपयोगकर्ता डेटा मिटा देगा ताकि वह मेरे नए डेटाबेस को अगले लॉन्च पर कॉपी कर सके?

क्या भविष्य में क्या होता है अगर मैं डेटाबेस परिवर्तन/जोड़ने रिकॉर्ड/आदि और पैकेज बनाने के नए एप्लिकेशन के साथ इस? क्या यह डेटाबेस पुराना डेटाबेस ओवरराइट नहीं करेगा?

अन्यथा, प्रत्येक लॉन्च पर ऐप बंडल से डेटाबेस कॉपी करने और ओवरराइड करने से बचने के लिए डेटाबेस फ़ाइलों के आकार और दिनांक की जांच करने का एक तरीका है और बंडल में डेटाबेस नया है तो केवल कॉपी करें?

अगर किसी को स्पष्टीकरण की आवश्यकता है तो कृपया पूछें।

उत्तर

12

मैं कुछ ऐसा ही कर रहा हूं। मैंने जो किया वह डेटाबेस संस्करण सेट किया गया है, और फिर जब मैं जांचता हूं कि डेटाबेस मौजूद है या नहीं, तो मैं यह भी सुनिश्चित कर सकता हूं कि यह सही संस्करण है। यदि ऐसा नहीं है, तो मैं डेटाबेस से उपयोगकर्ता पसंदीदा को सहेजता हूं, अपने डीबी को मिटा और दोबारा दोहराता हूं, और फिर उपयोगकर्ता पसंदीदा को वापस रखता हूं।

यह मेरी पर उन्नयन

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    if (oldVersion == 2) { 

     System.out.println("Performing upgrade!"); 
     openDataBase(); 
     // save the old favorites 
     Cursor mCursor = getFavorites(); 
     ArrayList<Stop> favs = allCursorToStops(mCursor); 
     mCursor.close(); 

     deleteRecreate(db); 

     openDataBase(); 

     for (int i = 0; i < favs.size(); i++) 
      setFavorite(favs.get(i)); 

     close(); 

    } else { 

     deleteRecreate(db); 

    } 
} 

है यहाँ है मैं कहाँ अस्तित्व की जाँच/अगर

boolean dbExist = checkDataBase(); 

    if(dbExist){ 
     // check if we need to upgrade 
     openDataBase(); 
     int cVersion = myDataBase.getVersion(); 
     close(); 
     if(cVersion != VERSION) 
      onUpgrade(myDataBase, myDataBase.getVersion(), VERSION); 
+1

उन्नत करने के लिए की जरूरत आदि और कैसे onUpgrade (..) कहा जाता जाता है? – Nativ

+0

@powerX ऑन अपग्रेड स्वचालित रूप से तब होता है जब आप डेटाबेस संस्करण संख्या बढ़ाते हैं। – ariets

+0

हाँ, इसके बाद से पहले से ही। धन्यवाद – Nativ

संबंधित मुद्दे