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