2012-05-13 14 views
10

ORMLite'u kullanan bir uygulamam var. Tüm db'yi sıfırlamak için bir işlev oluşturmam gerekiyor (temel olarak her db'den tüm satırları silmem, otomatik sıfırlamayı sıfırla ve dizinleri sıfırla).ORMLite tüm tabloları sıfırla

Muhtemelen her tabloda bir kesik açarak yapabilirim ama ORMLite bunu yapmak için belirli bir yönteme sahip mi?

cevap

29

ORMLite, tüm db'yi sıfırlamak için özel bir yönteme sahip değildir. Bu, tüm satırları tablodan kaldıran ve dizini temizleyen TableUtils.clearTable(connectionSource, dataClass)) method desteğini destekler, ancak bu otomatik artımı sıfırlamaz. Ayrıca, "dizinleri sıfırlama" nın bunları temizlemekten daha fazlasını ima ettiğinden emin değilim. Otomatik artış işleminin sıfırlanması işlemi, oldukça veritabanına bağımlı olacak, dolayısıyla ORMLite büyük olasılıkla hiç bir zaman yerel destek almayacaktır.

Bence en iyi bahis, drop the table using TableUtils.dropTable() ve sonra yeniden create it with TableUtils.createTable().

+0

aynı etkiyi dbhelper.onUpgrade (dbhelper.getWritableDatabase(), 0, DatabaseHelper.DATABASE_VERSION) adresinden edinilebilir; ? – max4ever

+0

Hey @ max4ever, Bunun sizin için yapacağını sanmıyorum. "OnUpgrae (...)" yöntemini uygulamanız gerekir, böylece nasıl yaptığınıza bağlı olarak değişir. Eğer 'onUpgrade (...)' düşer ve sonra oluşturursa, o zaman işe yarayacaktır. – Gray

+0

@Gray bu SQL ile execRaw() kullanabilir birincil idx oto inc silmek için: executeRawNoArgs ("sqlite_sequence silmek nerede name = '" + tabloismi + "';"); – drdrej

1

Ayrıca TableUtils.createTableIfNotExists (source, dataClass) 'ı da kullanabilirsiniz. Test yaparken kullanışlıdır.

4

Tek bir yol var .. veritabanını silin ancak bu yöntem genellikle kullanıcı oturumu kapattığında ve başka bir kullanıcı kimliği ile giriş yaparken kullanılır, oturum açmada db oluşturulur ve çıkışta db silinir. "Xxxxx" veritabanı adıdır

mContext.deleteDatabase("xxxxxx"); 

.