相关疑难解决方法(0)

如何在首次运行时填充Android Room数据库表?

在我SQLiteOpenHelper有一个onCreate(SQLiteDatabase ...)方法,我用一些初始数据填充数据库表.

有没有办法在第一个应用程序运行时将一些数据插入Room数据库表?

android android-room

32
推荐指数
4
解决办法
1万
查看次数

调用 Room.createFromAsset("initialData.db") 时,`.db` 文件应采用什么格式?

设想

我正在尝试用一些条目预先填充房间数据库。关于api调用的文档很清楚(developer.android docs),并且我读过一篇很好的博客(Medium文章),但我不熟悉实际预打包数据库文件的语法/格式(developmentData.db在下面的示例中) 。我在搜索过的任何地方都找不到任何文档。

Room
  .databaseBuilder(
      context.applicationContext, 
      MyDatabase::class.java, 
      "my_database")
  .fallbackToDestructiveMigration()
  .createFromAsset("database/developmentData.db")
  .build()
Run Code Online (Sandbox Code Playgroud)

想法

我已按照文档导出架构。以下是该过程的结果,供参考。在这种情况下,我只是创建一个虚拟对象,以便在这里提出我的问题。

{
  "formatVersion": 1,
  "database": {
    "version": 1,
    "identityHash": "0ad43a6714902eedbb90c1f77ab1ffcb",
    "entities": [
      {
        "tableName": "library_table",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`libraryId` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `description` TEXT NOT NULL)",
        "fields": [
          {
            "fieldPath": "libraryId",
            "columnName": "libraryId",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "title",
            "columnName": "title",
            "affinity": "TEXT",
            "notNull": true
          }, …
Run Code Online (Sandbox Code Playgroud)

android android-room

3
推荐指数
1
解决办法
1457
查看次数

标签 统计

android ×2

android-room ×2