首页 > 解决方案 > 如何使用字符串数组预填充房间数据库

问题描述

我正在尝试创建一个包含字符串数组的 Room 数据库,并希望进行预填充。我为 SQLite 尝试了 db browser,但它不包含数组数据类型。我能做些什么?我添加了我的表格模型和类型转换器。

@Entity(tableName ="Data Table")
data class Datas(
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "Id")
    val id : Int ,
    @ColumnInfo(name = "Data1")
    val data1 : String ,
    @ColumnInfo(name = "Data2")
    val data2 : Array<String> ,
    @ColumnInfo(name = "Data3")
    val data3 : Array<String>,
    @ColumnInfo(name = "Data4")
    val data4 : Array<String>,
    @ColumnInfo(name = "Data5")
    val data5 : Array<String>,



    )
    class converter{
    @TypeConverter
    fun fromString(value : String) : Array<String> {
        val listType = object : TypeToken<ArrayList<String>>(){}.type
        return Gson().fromJson(value,listType)
    }
    @TypeConverter
    fun fromArrayList(list : Array<String?>) : String {
        return Gson().toJson(list)

    }
}

标签: androidsqlitekotlinandroid-room

解决方案


也许是一个肮脏的解决方案,但我会:

  1. 编写一个方法,将你想要的字符串保存到数据库中
  2. 在模拟器中运行应用程序并执行该方法
  3. 从模拟器中检索数据库

繁荣:预先填充的数据库

如果您想手动执行此操作,您可以将字符串列表转换为与输出格式相同的 json,Gson().toJson()然后将其粘贴到 sqlite 浏览器中。


推荐阅读