在创建Android应用程序的各种实验中,有一个向SQLiteDatabase添加表的过程。从移动设备上删除该应用程序后,我再次通过Android Studio下载了该应用程序,但SQLiteDatabase中的数据结构并未消失。未添加要添加的表,并且连续发生错误。我还通过Android Studio中的[设备文件资源管理器]删除了数据库,但是如果重新安装它,数据仍然存在。为什么会这样?或者,如果您添加表结构,是否有一种方法可以整洁地添加它,而不必删除应用程序并重新安装它?我的SQLiteDatabase看起来像这样:
class MyDatabaseHelper(var context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
companion object {
private val DATABASE_NAME = "mydatabase.db"
private val DATABASE_VERSION = 1
private val ORIGINAL_TABLE_NAME = "original"
private val NEW_TABLE_NAME = "new"
}
private val KEY_ID = "id"
private val KEY_NAME = "name"
private val KEY_COLOR = "color"
override fun onCreate(db: SQLiteDatabase?) {
val ORIGINAL_TABLE = "CREATE TABLE IF NOT EXISTS $ORIGINAL_TABLE_NAME(" +
"$KEY_ID TEXT, " +
"$KEY_NAME TEXT, " +
"$KEY_COLOR TEXT)"
val NEW_TABLE = "CREATE TABLE IF NOT EXISTS $NEW_TABLE_NAME(" +
"$KEY_ID TEXT, " +
"$KEY_NAME TEXT, " +
"$KEY_COLOR TEXT)"
db?.let {
it.execSQL(ORIGINAL_TABLE)
it.execSQL(NEW_TABLE)
}
}
override fun onUpgrade(db: SQLiteDatabase?, old: Int, new: Int) {
if (old >= new) {
db?.let {
db.execSQL("DROP TABLE IF EXISTS $ORIGINAL_TABLE_NAME")
db.execSQL("DROP TABLE IF EXISTS $NEW_TABLE_NAME")
onCreate(db)
}
}
}
}
如您在上面的结构中看到的那样,它是仅使用现有ORIGINAL_TABLE
并添加NEW_TABLE
的数据结构。