有没有一种方法可以删除Android上SQLiteDatabase中的所有内容?

时间:2020-09-01 03:35:37

标签: android android-sqlite sqliteopenhelper

在创建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的数据结构。

0 个答案:

没有答案