SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Kiedy działa SQLiteOpenHelper onCreate() / onUpgrade()?

SQLiteOpenHelper onCreate() i onUpgrade() wywołania zwrotne są wywoływane, gdy baza danych jest rzeczywiście otwierana, na przykład przez wywołanie getWritableDatabase() . Baza danych nie jest otwierana podczas tworzenia samego obiektu pomocniczego bazy danych.

SQLiteOpenHelper wersje plików bazy danych. Numer wersji to int argument przekazany do konstruktora. W pliku bazy danych numer wersji jest przechowywany w PRAGMA user_version .

onCreate() jest uruchamiany tylko wtedy, gdy plik bazy danych nie istniał i został właśnie utworzony. Jeśli onCreate() zwraca pomyślnie (nie zgłasza wyjątku), zakłada się, że baza danych została utworzona z żądanym numerem wersji. W konsekwencji nie powinieneś przechwytywać SQLException s w onCreate() siebie.

onUpgrade() jest wywoływana tylko wtedy, gdy plik bazy danych istnieje, ale przechowywany numer wersji jest niższy niż żądany w konstruktorze. onUpgrade() powinien zaktualizować schemat tabeli do żądanej wersji.

Podczas zmiany schematu tabeli w kodzie (onCreate() ), upewnij się, że baza danych jest zaktualizowana. Dwa główne podejścia:

  1. Usuń stary plik bazy danych, aby onCreate() jest uruchamiany ponownie. Jest to często preferowane w czasie programowania, gdy masz kontrolę nad zainstalowanymi wersjami, a utrata danych nie stanowi problemu. Kilka sposobów na usunięcie pliku bazy danych:

    • Odinstaluj aplikację. Użyj menedżera aplikacji lub adb uninstall your.package.name z powłoki.

    • Wyczyść dane aplikacji. Użyj menedżera aplikacji.

  2. Zwiększ wersję bazy danych, aby onUpgrade() jest wywoływany. Jest to nieco bardziej skomplikowane, ponieważ potrzeba więcej kodu.

    • W przypadku aktualizacji schematu w czasie programowania, w których utrata danych nie stanowi problemu, możesz po prostu użyć execSQL("DROP TABLE IF EXISTS <tablename>") w, aby usunąć istniejące tabele i wywołać onCreate() aby odtworzyć bazę danych.

    • W przypadku wydanych wersji należy zaimplementować migrację danych w onUpgrade() aby Twoi użytkownicy nie stracili swoich danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiedy działa SQLiteOpenHelper onCreate() / onUpgrade()?

  2. Grupa SQLite według

  3. Wykryj, czy wartość zawiera co najmniej jedną cyfrę w SQLite

  4. Pobieranie kolumny z .sqlite zawierającej wiele tabel z wieloma kolumnami

  5. Najlepsze praktyki dotyczące pracy z wieloma tabelami