Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite onUpgrade在不接触旧表的情况下添加新表_Android_Sqlite_Kotlin - Fatal编程技术网

Android SQLite onUpgrade在不接触旧表的情况下添加新表

Android SQLite onUpgrade在不接触旧表的情况下添加新表,android,sqlite,kotlin,Android,Sqlite,Kotlin,我现在有一个安卓数据库设置。数据库和表工作正常。但是,当我想添加一个新表并使用onUpgrade时,数据库已经创建,但不能正常工作。如表中所示,该表看起来已创建,但无法向其中添加数据。当我尝试应用程序崩溃时。所有版本1的表看起来都很好 以下是我的onUpgrade的样子: private val newDatabase = listOf<String>( "Database1" ) override fun onUpgrade(db: SQLiteDataba

我现在有一个安卓数据库设置。数据库和表工作正常。但是,当我想添加一个新表并使用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)
    }
}
这是添加新表的最佳方式吗?一旦这张桌子做好了,它似乎是空的,不能正常工作。即使我设置了默认值


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

这里有一个工作示例

不正常工作对你意味着什么?请注意,列的默认值并不意味着插入任何行。@laalto如中所示,表看起来已创建,但无法向其中添加数据。当我尝试应用程序崩溃时。我将用这些信息更新我的应用程序。另外,我不知道默认值。如果发生崩溃,logcat中会有一个stacktrace,这是调试的关键起点。因此,在本例中,您希望新表的名称为Database1?@forpas是,并用一些默认值填充它。马克贴了一个答案,帮助我解决了问题
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)
        }

    }