Dahili veritabanı yedekleme nasıl yapılır?Android yedekleme/geri yükleme:
FileBackupHelper
yedekleme ve yerel veritabanını geri yüklemek için sağlanan BackupAgentHelper
kullanarak hayata geçirdik. Bu genellikle birlikte ContentProviders
ve /data/data/yourpackage/databases/
bulunan bir veritabanıdır.
Bu yaygın bir durum olduğunu düşünürdüm. Doktorlar ne yapacağı konusunda net değil ancak: http://developer.android.com/guide/topics/data/backup.html.Özellikle bu tipik veritabanları için BackupHelper
yoktur. Dolayısıyla FileBackupHelper
kullandımbenim işaret etti .db dosyasında "/databases/
", tanıttı kilitleri etrafında herhangi bir db işlemi (db.insert
) benim ContentProviders
ve hatta çalıştı oluşturma "/databases/
" dizin önce onRestore()
çünkü öyle bir yer yok sonra yükleyin.
Geçmişte başarılı bir şekilde farklı bir uygulama SharedPreferences
benzer bir çözüm hayata geçirdik. Ancak ben test benim yeni uygulama öykünücüsü-2.2, görüyorum bir yedeği olmaktan gerçekleştirilen LocalTransport
günlükler olarak restore ediliyor gerçekleştirilen (ve onRestore()
denir).Henüz db asla oluşturulur dosya.
Bu bir yüklemeden sonra, geri sonra app önce ilk lansmanı gerçekleştirildi unutmayın. Bunun dışında benim test stratejisi http://developer.android.com/guide/topics/data/backup.html#Testing dayanıyordu.
Lütfen kendimi yönetmek Bazı sqlite veritabanı bahsetmiyorum ayrıca not, ne de SDcard yedekleme hakkında, sunucu ya da başka bir yerde.
Veritabanları BackupAgent
ama ile ilgili görünmüyor bir özel kullanım için danışmanlık ile ilgili belgeler bir söz gördüm:
Ancak, uzatmak isteyebilirsiniz BackupAgent eğer ihtiyacınız varsa doğrudan: * Bir veritabanındaki verileri yedekleyin. Eğer bu bir SQLite veritabanı varsa kullanıcı ne zaman geri istiyorum yeniden yükler uygulamanız gerekir özel bir BackupAgent oluşturmak için bu bir sırasında uygun veri okur yedekleme işlemi, daha sonra oluşturmak tablo ve veri sırasında bir Ekle geri yükleme işlemi.
Biraz daha netlik lütfen.
Eğer ben gerçekten kendim için SQL seviyesine kadar gerekiyorsa, o zaman şu konular hakkında endişeleniyorum
Açık veritabanları ve işlemler. Benim app, iş dışında böyle bir singleton sınıf onları kapatmak için nasıl hiçbir fikrim yok.
Bir yedekleme işlemi kullanıcıya bildirmek için nasıl ve veritabanı kilitli. Uzun bir zaman alabilir, bir ilerleme çubuğu göstermek için ihtiyacım olabilir.
Nasıl geri aynı yapmak. Anladığım kadarıyla, kullanıcının uygulamayı kullanarak (ve veritabanına veri girilmesi) başladı an olabilir geri yükleme. Sadece bir yerde backupped verileri (boş veya eski verileri silme) geri tahmin edemezsin. Önemsiz olmayan herhangi bir veritabanı için imkansız olan bir şekilde katılmak için kimlik nedeniyle olacak.
Geri yükledikten sonra app yenilemek için nasıl kullanıcı - şimdi - biraz ulaşılmaz noktada sıkışmış almadan yapılır.
Veritabanı yedekleme veya geri yükleme yükseltildi emin olabilirim? Aksi halde beklenen şema aynı olmayabilir.
CEVAP
Sorumu yeniden ziyaret ettikten sonra, how ConnectBot does it baktıktan sonra onu işe almak başardı. Teşekkürler ve Jeffrey Kenny!
Aslında ekleme kadar kolaydır:
FileBackupHelper hosts = new FileBackupHelper(this,
"../databases/" HostDatabase.DB_NAME);
addHelper(HostDatabase.DB_NAME, hosts);
senin için 17**.
Eksik olduğum nokta ile göreceli bir yol kullanmak gerekecek olmasıydı "../databases/
".
Yine de, bu hiçbir şekilde mükemmel bir çözümdür. FileBackupHelper
docs örneğin söz: "FileBackupHelper
küçük yapılandırma dosyaları, büyük ikili dosyaları değil, sadece kullanılmalıdır."ikinci SQLite ile bu durumda veritabanları.
Daha fazla öneri için, bize uygun bir çözüm vardır, ne beklenen anlayışlar gibi, ve bu sonu olabilir tavsiye ederim.
Nasıl veritabanı dosyası android sdcar...
SQL Server Veritabanı Yedekleme alt sü...
Nasıl yedekleme uzak bir SQL yerel bir...
SQL Server Yedekleme sürecini belirlem...
Veritabanı yedekleme Android SDCard ya...