SORU
15 Kasım 2011, Salı


Android: sürüm yükseltme DB ve ekleyerek yeni bir tablo

Zaten benim app için sqlite tabloları oluşturdum, ama şimdi veritabanına yeni bir tablo eklemek istiyorum.

Aşağıda DB sürümünü değiştirdim

private static final int DATABASE_VERSION = 2;

ve tablo oluşturmak için Eklenen bir dize

private static final String DATABASE_CREATE_color = 
   "CREATE TABLE IF NOT EXISTS files(color text, incident_id text)";

onCreate onUpgrade aşağıdaki gibi:

@Override
    public void onCreate(SQLiteDatabase database) {
        database.execSQL(DATABASE_CREATE_incident);
        database.execSQL(DATABASE_CREATE_audio);
        database.execSQL(DATABASE_CREATE_video);
        database.execSQL(DATABASE_CREATE_image);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //drop table and add new tables when version 2 released.
        db.execSQL(DATABASE_CREATE_color);

    }

Ama nedense yeni bir tablo oluşturuluyor. Neyi yanlış yapıyorum?

CEVAP
15 Kasım 2011, Salı


1. Hakkında onCreate() ve onUpdate()

onCreate(..) app yeni kurulmuş her denir. onUpgrade app yükseltilmiş ve çalıştırıldığında ve denirVeritabanı Sürümüaynı değil.

2. Artan db versiyonu

Bir kurucu gibi gerekir:

MyOpenHelper(Context context) {
   super(context, "dbname", null, 2); // 2 is the database version
}

ÖNEMLİ: yalnız app sürümünü Artırma onUpgrade ismi olmak için yeterli değil!

3. Unutmayın yeni kullanıcılar!

Eklemeyi unutmayın

database.execSQL(DATABASE_CREATE_color);

senin onCreate() veya yeni yüklenen uygulamalar tablo eksik kalacaktır. yöntem

4. Ne kadar zaman içinde birden çok veritabanı değişiklikleri ile başa çıkmak için

Birkaç veritabanı yükseltmeleri var art arda app yükseltmeleri varsa, emin oldVersion kontrol olmak istiyorum:

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   switch(oldVersion) {
   case 1:
       db.execSQL(DATABASE_CREATE_color);
       // we want both updates, so no break statement here...
   case 2:
       db.execSQL(DATABASE_CREATE_someothertable); 
   }
}

Bir kullanıcı, sürüm Sürüm 1'den yükseltme yaparken bu şekilde 3, ikisi de güncellemeler alın. Ne zaman bir kullanıcı yükseltmeleri, sürüm 2, 3, onlar sadece Gözden Geçirme 3 güncelleme... bütün bunlardan Sonra, bunu yapamazsın deyince 0 kullanıcı tabanı yükseltme her zaman serbest bir güncelleme. Bazen bir güncelleştirme atlamak ya da 12 :)

5. Geliştirirken kontrol altında revizyon numaraları tutmak

Ve... yapılan aramalar sonunda

adb uninstall <yourpackagename>

tamamen kaldırılırken, uygulama. Yeniden yüklediğinizde, geliştirmek gibi stratosfere veritabanı sürümünü artırma tutmak zorunda sizi tutar onCreate hit garantilidir...

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CNET

    CNET

    5 Mayıs 2006
  • FRED

    FRED

    1 EKİM 2005
  • pissengehen

    pissengehen

    26 EYLÜL 2006