我在 Android 应用程序中将数据保存到 sqldelight 1.4 时遇到问题。
我创建了表:
CREATE TABLE myTable(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
name TEXT
);
在 repo 类中,我有以 myTable 对象作为参数的插入函数
fun insert(item: myTable) {
myTableQueries.insert(
name = item.name
)
}
并且在某些操作中,我尝试创建带有名称但没有 id 的新对象表,因为 id 是自动递增的。 我还没有找到任何信息如何做到这一点。 哪个是最好的解决方案?
myTableViewModel.insert(name)
@Parcelize
class myTable(val name: String) : Parcelable
在视图模型中使用参数?
谢谢
答案 0 :(得分:0)
此主题已在此处的 sqldelight 问题中讨论过:https://github.com/cashapp/sqldelight/issues/1284
您可以在 .sq 文件中使用 insert
参数为所有变量定义 sqlite ?
语句,如 sqldelight 的文档所述:https://cashapp.github.io/sqldelight/android_sqlite/
示例:
CREATE TABLE hockeyPlayer (
id INTEGER PRIMARY KEY AUTOINCREMENT,
player_number INTEGER NOT NULL,
full_name TEXT NOT NULL
);
insert:
INSERT INTO hockeyPlayer
VALUES (?, ?, ?);
并且从您的 Kotlin 代码中,您可以传递 null
作为其 id,这使得自动增量工作:
query.insert(
id = null,
player_number = 100,
full_name = "name"
)