android - 如何使用字符串数组预填充房间数据库
问题描述
我正在尝试创建一个包含字符串数组的 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)
}
}
解决方案
也许是一个肮脏的解决方案,但我会:
- 编写一个方法,将你想要的字符串保存到数据库中
- 在模拟器中运行应用程序并执行该方法
- 从模拟器中检索数据库
繁荣:预先填充的数据库
如果您想手动执行此操作,您可以将字符串列表转换为与输出格式相同的 json,Gson().toJson()
然后将其粘贴到 sqlite 浏览器中。
推荐阅读
- sql-server - SQL Server:仅显示满足条件的值
- windows-10 - Google Cloud SDK 安装错误:此时文件是意外的
- java - Azure sql 连接使用 JTDS 挂起
- python - 在 Azure Batch 中运行任务时保存输出(使用 python SDK)
- java - 在 RecyclerView 中禁用滑动
- c# - 重构此通用方法以满足 SonarQube S4018 的最佳方法是什么
- r - 从长列到 grup 列表的 data.table
- javascript - Test Cafe - 如何修改或注入数据到响应中?
- vba - 如何在 xmlresponse 中没有表 id 和/或没有值的情况下从华尔街日报市场日记中抓取数据
- c - sizeof() 数组在 C 中的函数原型中以显式长度定义