Mam aplikację na Androida, która korzysta z bazy danych SQLite i Active Android jako ORM. Przy każdej aktualizacji aplikacji muszę wysłać moją bazę danych z nowymi/zaktualizowanymi danymi. To, co robiłemAndroid SQLite: zastąp istniejącą bazę danych nową lub użyj skryptów migracji
- Mam my_app.db bazy
- ja wprowadzania zmian w wierszach, stoły, itp z my_app.db
- I zapisać zmodyfikowany my_app.db jak my_app_v2.db (i tak dalej)
- wymienić my_app.db plik w folderze aktywów z my_app_v2.db i ustawić go jako domyślny bazy
- skompilować i uruchomić program za pomocą nowo utworzonego my_app_v2.db
Więc gdy użytkownik pobiera aplikację, zostanie ona przy użyciu my_app_v2.db z nową zawartością.
Wiem, że aktywny Android supports migration scripts, ale przy każdej aktualizacji bazy danych muszę dodać/zaktualizować około 2000 rekordów. Tak więc dla każdej aktualizacji bazy danych potrzebowałbym skryptu migracji z 2000+ instrukcjami wstawiania/aktualizacji, oznacza to, że dla 3+ kolejnych aktualizacji aplikacja musiałaby wykonać około 6000 instrukcji.
Chcę wiedzieć, czy moje podejście polegające na zastąpieniu całej bazy danych nową jest złą praktyką, a skrypty migracji powinny być preferowane.
dla Insert/zapytania uaktualnienia są przechodzącą oddzielne kwerendy lub z wykorzystaniem transakcji dla zapytań ?? – PN10
Jak już powiedziałem, wysyłam aplikację z nową bazą danych z całą zawartością aktualizacji, dlatego nie używam kwerendy wstawiania/aktualizacji do aktualizacji bazy danych w metodzie onUpdate(). – regmoraes
Możliwy duplikat http://stackoverflow.com/questions/19793004/android-sqlite-database-why-drop-table-and-recreate-on-upgrade – Tushar