Uygulama deposuna (sürüm 1.0) bir uygulama yükledim. Uygulamam, bazı verileri depolamak için bir sqlite veritabanı kullanıyor. Şimdi veritabanında bazı değişiklikler yaptım (db'mdeki tablolardan birinde 2 veya 3 yeni sütun ekledim). Uygulamamın önceki sürümünü yeni sürüm 1.1 ile (farklı db yapısına sahip) güncellemek istiyorum. Şimdi, 1.0 sürümü kullanan kullanıcılar uygulamayı 1.1 sürümüne yükselttiğinde, db zaten uygulama sanal alanında mevcut ve bu nedenle, uygulama 1.1 sürümüne işaret ediyor, ancak db hala eski olanı. Varsa, eski verilerle yeni db'ye sahip olmak istiyorum. Lütfen bana yardım edin. Teşekkürler.Farklı bir sürümü ile mağazaya yeni sürümü güncelleme sqlite db yapısı
cevap
sqlite uygulamanızın db geçerli şema sürümü için sorgulamak için PRAGMA user_version
yürütebileceği, user_version özelliği olarak adlandırılan şey destekler. Bu sorgu, uygulamanızın başladığı sırada başlangıçta yazılabilir.
bu user_version güncelleme sorgusu PRAGMA user_version = version_num
aşağıdaki yürütmek güncellemek için;
Eğer sqlite db oluşturduğunuzda
, gelecekte yükseltme yaparken mevcut değerini sorgulamak, böylece bu özellik user_version koymak iyi uygulamadır. Şema sürümünüzü yükseltmek için neyin gerekip gerekmediğini kontrol edin ve kalanları değiştirin veya tablolar oluşturun. Örneğin: İlk sürümde
Ben col1 ile table1 oluşturmak, col2
Ben table1 oluşturmak için sql çalıştırmak ve başarıyla bittiğinde, i = 1 yani bu gösterecektir Pragma user_version yürütmek benim geçerli şema sürümü, i, 2
Ben ilk sorgu user_version benim şema sürümünü değiştirmek gerekir onun değer kontrol edin ve 1 ise, o zaman değiştirmek çalıştırmak için gereken i yeni Col3 eklemek gelecek sürümde 1
olduğunu eklenecek komut dosyası Yeni sütun ve durumda 2.
ayarlı kullanıcı sürümü, daha önce user_version ayarlamadıysanız beri, yeni bir yükseltme senaryosu vs yüklemek ayırt etmek zor olurdu. Şimdilik, eğer db mevcutsa, senaryoya yükseltme senaryosu olup, komut dosyalarını değiştirir ve varsa, yeni bir yükleme senaryosu olduğunu varsayın ve komut dosyaları oluşturmaya çalışın. Ama gelecekteki atneast sorununuzu çözmek için yukarıdaki pragma kullanabilirsiniz eğer bakın.
veritabanı şemasını güncelleştirmek ve korumak için iyi bir yol gibi görünüyor, kesinlikle bunu deneyeceğim. –
eski db & silin, yeni db'yi kapatın, yeniden adlandırın ve ardından güncellenmiş uygulamanızın kullanımı için tekrar açın. Kolay, hızlı, & yapmak için SQLite hakkında derin bir bilgiye ihtiyacınız yoktur.
Ancak bu şeyi yalnızca kullanıcı 1.0'dan 1.1 sürümüne yükselttiğinde yapmak istiyorum. Anlattığınız yaklaşım, app delegate uygulamasında appDidFinishLaunching yönteminde uygulanacak ve bu nedenle, her defasında uygulamanızı başlattığımda bu kod satırları çalıştırılacak. Sağ??? Yani, sqlite veritabanı sürüm numarası gibi bir şeye ihtiyacım var. – anshul
Öyle değil - sadece db yeni yapı olup olmadığını kontrol etmek veya – SomaMan
- 1. iPhone uygulaması Güncelleme Vs yeni sürümü
- 2. RVM'yi kullanarak, taşlar farklı bir yakut sürümü
- 3. sürümü
- 4. SQLite veritabanı kitaplığı gibi kütüphane sürümü?
- 5. Raylar, Yüklü Gem sürümü ve Gemfile.lock sürümü
- 6. Robolectric ile sorun, Google Play hizmetlerinin yeni sürümü ile
- 7. C# Sürümü ve .NET Framework Sürümü?
- 8. Yeni APK sürümü ve yanlış Düzenler
- 9. Yeni Gradle sürümü (2.3) neden başarısız oluyor?
- 10. AppStore iOS uygulaması yeni sürümü sunulması
- 11. Uygulama sürümü içinden uygulama sürümü notları al
- 12. Kurento'nun en yeni ve istikrarlı sürümü
- 13. , lmer'in yeni sürümü için yinelemeleri artırır mı?
- 14. SQLiteOpenHelper anahtarlama veritabanı sürümü
- 15. Yayın sürümü
- 16. Ücretsiz sürümü nasıl yönetilir?
- 17. EasyTracker (GA) uygulamasının her bir sürümü yeni kullanıcı olarak bildirildi
- 18. NPM güncelleme ben son sürümü için tüm paketleri güncellemek istiyorum son sürümü
- 19. Android ile kullanmak için hangi Eclipse sürümü
- 20. Bir barındırma modx'in iki sürümü
- 21. python sürümü var mı?
- 22. Düğüm sürümü> 0.12
- 23. rvm ile birden çok rubygems sürümü kullanın?
- 24. Güncelleme SQLite Masa Android
- 25. revizyon vs sürümü
- 26. Objektif-c (iphone sürümü)
- 27. Python sürümü nasıl güncellenir?
- 28. Varolan projeyi tutulmaya sürükleyin, eski sürümü yeni bir
- 29. Android sqlite güncelleme sorunları
- 30. Gradient change checkstyle sürümü
Veritabanını yükseltme stratejisi için http://stackoverflow.com/a/9851554/108574 adresindeki yanıtımı kontrol edin. –
@HeShiming Teşekkürler dostum. Ancak, sürüm 1.0'ı uygulama mağazasına zaten yükledim ve bir meta veri tablonuz yok (önerdiğiniz gibi veritabanı sürümünü depolamak için). Şimdi yeni bir versiyon yüklemek istiyorum ve db yapısında bir değişiklik var. Peki şimdi nasıl başarabilirim? – anshul
iyi yöntem hala geçerli. Seçili ifadenin dönüş değerini kontrol ederek meta veri tablosunun varlığını kontrol etmeniz yeterlidir. O zaman mevcut değilse, bir tane oluşturun. –