mlo*_*y92 8 android kotlin sqldelight
我在 Android 应用程序中将数据保存到 sqldelight 1.4 时遇到问题。
我创建了表:
CREATE TABLE myTable(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
name TEXT
);
Run Code Online (Sandbox Code Playgroud)
在 repo 类中,我有以 myTable 对象作为参数的插入函数
fun insert(item: myTable) {
myTableQueries.insert(
name = item.name
)
}
Run Code Online (Sandbox Code Playgroud)
在某些操作中,我尝试创建带有名称但没有 id 的新对象表,因为 id 是自动递增的。我没有找到任何信息如何做到这一点。哪个是最好的解决方案?
myTableViewModel.insert(name)
Run Code Online (Sandbox Code Playgroud)
@Parcelize
class myTable(val name: String) : Parcelable
Run Code Online (Sandbox Code Playgroud)
并在视图模型中使用参数?
谢谢
sho*_*ano 12
这个主题已经在 sqldelight 问题中讨论过:https://github.com/cashapp/sqldelight/issues/1284
insert您可以使用所有变量的参数在 .sq 文件中定义 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 (?, ?, ?);
Run Code Online (Sandbox Code Playgroud)
您可以从 Kotlin 代码中传递null它的 id,这使得自动增量起作用:
CREATE TABLE hockeyPlayer (
id INTEGER PRIMARY KEY AUTOINCREMENT,
player_number INTEGER NOT NULL,
full_name TEXT NOT NULL
);
insert:
INSERT INTO hockeyPlayer
VALUES (?, ?, ?);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4414 次 |
| 最近记录: |