Kotlin android 预填充数据库
Kotlin andoid pre poluate data base
我正在尝试构建一个非常简单的数据库来存储 Hangman 游戏的分数。
我建立了一个实体:
@Entity(tableName = "scores") data class DBScore(
@PrimaryKey
var pseudo: String = "",
var score: Int = 0 ) {
}
//Conversion method to go from DB model to kotlin model fun
List.asDomainModel(): List {
return map {
Score(
pseudo = it.pseudo,
score = it.score
)
}
}
用数据库文件的样本值预填充数据库
INSTANCE = databaseBuilder(
context.applicationContext,
AppDataBase::class.java,
"app_database"
)
.createFromAsset("database/scores.db").build()
我为此创建了以下数据库文件:https://wetransfer.com/downloads/c534dd62136c94f17c0ee71f1ef39a1920201011144837/6ff2b7
但是我得到一个错误并且不明白我的数据库有什么问题:
原因:java.lang.IllegalStateException:预打包的数据库具有无效的架构:scores(com.example.hangmangame.database.entity.DBScore)。
预期的:
TableInfo{name='scores', columns={pseudo=Column{name='pseudo', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1, defaultValue='null'}, score=Column{name='score', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], 索引=[]}
成立:
TableInfo{name='scores', columns={score=Column{name='score', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, pseudo=Column{name='pseudo', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1, defaultValue='null'}}, foreignKeys=[], indices=[]}
似乎是列顺序的问题,但对我来说 SQL 对此不敏感。
感谢任何帮助。
此致
昆汀。
房间预计 score
为 NOT NULL
。您的 pre-populated 数据库模式将其设为 NULL
,显然是基于错误。
我正在尝试构建一个非常简单的数据库来存储 Hangman 游戏的分数。
我建立了一个实体:
@Entity(tableName = "scores") data class DBScore( @PrimaryKey var pseudo: String = "", var score: Int = 0 ) {
}
//Conversion method to go from DB model to kotlin model fun List.asDomainModel(): List { return map { Score( pseudo = it.pseudo, score = it.score ) }
}
用数据库文件的样本值预填充数据库
INSTANCE = databaseBuilder( context.applicationContext, AppDataBase::class.java, "app_database" ) .createFromAsset("database/scores.db").build()
我为此创建了以下数据库文件:https://wetransfer.com/downloads/c534dd62136c94f17c0ee71f1ef39a1920201011144837/6ff2b7
但是我得到一个错误并且不明白我的数据库有什么问题:
原因:java.lang.IllegalStateException:预打包的数据库具有无效的架构:scores(com.example.hangmangame.database.entity.DBScore)。 预期的: TableInfo{name='scores', columns={pseudo=Column{name='pseudo', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1, defaultValue='null'}, score=Column{name='score', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], 索引=[]} 成立: TableInfo{name='scores', columns={score=Column{name='score', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, pseudo=Column{name='pseudo', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1, defaultValue='null'}}, foreignKeys=[], indices=[]}
似乎是列顺序的问题,但对我来说 SQL 对此不敏感。
感谢任何帮助。
此致
昆汀。
房间预计 score
为 NOT NULL
。您的 pre-populated 数据库模式将其设为 NULL
,显然是基于错误。