SQLiteOpenHelper
onCreate()
dan onUpgrade()
callback dipanggil saat database benar-benar dibuka, misalnya dengan panggilan ke getWritableDatabase()
. Basis data tidak dibuka saat objek pembantu basis data itu sendiri dibuat.
SQLiteOpenHelper
versi file database. Nomor versi adalah int
argumen diteruskan ke konstruktor. Dalam file database, nomor versi disimpan di PRAGMA user_version
.
onCreate()
hanya dijalankan ketika file database tidak ada dan baru saja dibuat. Jika onCreate()
berhasil kembali (tidak mengeluarkan pengecualian), database diasumsikan dibuat dengan nomor versi yang diminta. Sebagai implikasinya, Anda tidak boleh menangkap SQLException
s di onCreate()
sendiri.
onUpgrade()
hanya dipanggil ketika file database ada tetapi nomor versi yang disimpan lebih rendah dari yang diminta di konstruktor. onUpgrade()
harus memperbarui skema tabel ke versi yang diminta.
Saat mengubah skema tabel dalam kode (onCreate()
), Anda harus memastikan database diperbarui. Dua pendekatan utama:
-
Hapus file database lama sehingga
onCreate()
dijalankan lagi. Ini sering lebih disukai pada waktu pengembangan di mana Anda memiliki kendali atas versi yang diinstal dan kehilangan data tidak menjadi masalah. Beberapa cara untuk menghapus file database:-
Copot pemasangan aplikasi. Gunakan pengelola aplikasi atau
adb uninstall your.package.name
dari cangkangnya. -
Hapus data aplikasi. Gunakan pengelola aplikasi.
-
-
Tingkatkan versi database sehingga
onUpgrade()
dipanggil. Ini sedikit lebih rumit karena diperlukan lebih banyak kode.-
Untuk peningkatan skema waktu pengembangan di mana kehilangan data tidak menjadi masalah, Anda cukup menggunakan
execSQL("DROP TABLE IF EXISTS <tablename>")
in untuk menghapus tabel yang ada dan memanggilonCreate()
untuk membuat ulang basis data. -
Untuk versi yang dirilis, Anda harus mengimplementasikan migrasi data di
onUpgrade()
agar pengguna Anda tidak kehilangan datanya.
-