Android SQLite onUpgrade在不影响旧表的情况下添加新表

时间:2019-01-15 19:56:46

标签: android sqlite kotlin

我现在在android中设置了数据库。数据库和表工作正常。但是,当我想添加一个新表并使用onUpgrade时-创建了数据库,但是无法正常工作。正如表中看起来已创建,但我无法向其中添加数据。当我尝试应用崩溃时。所有版本1的表格仍然看起来不错。

这是我的onUpgrade的样子:

private val newDatabase = listOf<String>(
        "Database1"
    )
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {

    newDatabase.forEach{
        val table2 = "CREATE TABLE $it ($ID INTEGER PRIMARY KEY, $AVERAGETIME TEXT DEFAULT \"0\",$DATE TEXT DEFAULT \"0\")"
        db?.execSQL(table2)
    }
}

我的oncreate看起来完全一样,只是使用了不同的字符串数组:

override fun onCreate(db: SQLiteDatabase?) {

        originalDatabase.forEach {
            val table1 =
                "CREATE TABLE $it ($ID INTEGER PRIMARY KEY, $AVERAGETIME TEXT DEFAULT \"0\",$DATE TEXT DEFAULT \"0\")"
            db?.execSQL(table1)
        }

    }

这是添加新表的最佳方法吗?制成表格后,它似乎空白,无法正常工作。即使我已为其设置默认值。

我尝试浏览其他帖子,但似乎找不到一个具体答案

1 个答案:

答案 0 :(得分:1)

这是一个有效的示例Delivery Droid Database Class