2016-11-25 20 views
5

Benim Android Uygulamasında bir SQLite Veritabanı ve bir İçerik Sağlayıcısı var. Bu İçerik Sağlayıcı, uygulamanın AndroidManifest.xml numaralı telefonunda kayıtlı. Dışa aktarılmaz, bu yüzden sadece benim uygulamam onu ​​görebilir. Kullanıcının profilini sıfırlamanın bir parçası olarak, bu veritabanını tamamen silmek ve sıfırdan yeniden oluşturmak istiyorum. İlk başta aktivitenin içeriğinden deleteDatabase()'u aramayı denedim. Bu çalışır, ancak sadece uygulama kapatılır ve daha sonra yeniden açılırsa. Aksi takdirde veritabanının salt okunur olduğunu söyleyen satırları eklemeye çalıştığımda çökecektir. Anlayışım, bağlantının deleteDatabase() numaralı telefonu aramadan önce kapatılması gerektiğidir. Yine de, bağlantı İçerik Sağlayıcı tarafından yönetilir ve anladığım kadarıyla manuel olarak kapatılmamalıdır.İçerik Sağlayıcılarını kullanırken veritabanını yeniden oluşturun

Alternatif olarak, tablolardaki tüm verileri silecek ve sıralama sayılarını el ile sıfırlayacak bir özel işlevi çağırmak için ContentResolver'dan call() yöntemini kullanıyorum.

Bu, ancak şimdi her tablodaki verileri el ile silmem gerekiyor ve gelecekte yapacağım değişiklikleri izlemem gerekiyor.

bir ContentProvider kullanırken benim DatabaseHelper ( SQLiteOpenHelper) tetik onCreate() tüm veritabanını silmek ve sahip olmak daha iyi bir yolu var mı?

+0

Niçin tüm içeriği silmek ve yeniden oluşturmak istiyorsunuz? –

+0

@DiegoTorresMilano Her tabloyu/satırı (dolayısıyla deleteDatabase'i çağırmaya çalışmak zorunda kalmadan) veritabanını yeni bir duruma hızlı bir şekilde yenilemeye çalışıyorum ve ilk kurulum işleminin yeni profili ilk başta olduğu gibi yeniden yapılandırmasına izin veriyorum. koşmak. Şu anda tüm veri satırlarını siliyorum, sadece çalışacak olan deleteDatabase'i çağırmaya yakın bir şey olup olmadığını merak ediyorum. – Programmer001

+0

Dosya hala açıkken silmeye çalışmamalısınız. –

cevap

1

Akla gelen bir öneri, özel işlevinizin tabloları bırakmasını ve yeniden oluşturmasını sağlamaktır. Zaten DatabaseHelper'un onCreate() tablosunu oluşturmak için kodunuz var. Bu, DatabaseHelper ve özel yöntem tarafından erişilebilir bir yerde Refactor.

+0

Sağ. DeleteDatabase işe yaramadıktan sonra, tabloları bırakarak işe başladım, ancak daha sonra on satırlarını çağırmak yerine tüm satırlarını silmeye ve sıra sayısını sıfırlamaya karar verdim. Cevabınız da işe yarayacak. Cevabımı biraz daha akıl yürütmek için Diego'ya bak. Başka bir cevap yoksa, bunu cevap olarak kabul edebilirim. – Programmer001

İlgili konular