gpt4 book ai didi

android - Sqldelight 1.4 如何在没有主键(id)的情况下插入填充数据生成对象

转载 作者:行者123 更新时间:2023-12-04 23:54:14 29 4
gpt4 key购买 nike

我在 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 是自动递增的。
我没有找到任何信息如何做到这一点。
哪个是最好的解决方案?
  • 新建一个类(myTablexpress),参数和数据类(myTable)一样,在repo类的insert函数的参数中使用这个对象,使用这些参数?
  • 不在 Action 类中创建新的 myTable 实例,而是使用插入函数并将字符串值作为参数?
  • myTableViewModel.insert(name)
  • 创建没有 id
  • 的新类 myTable
    @Parcelize
    class myTable(val name: String) : Parcelable
    并在 View 模型中使用参数?
  • 没有一个

  • 谢谢

    最佳答案

    该主题已在此处的 sqldelight 问题中讨论:https://github.com/cashapp/sqldelight/issues/1284
    您可以定义您的 sqlite insert使用 ? 在您的 .sq 文件中声明所有变量的参数,如 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"
    )

    关于android - Sqldelight 1.4 如何在没有主键(id)的情况下插入填充数据生成对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65863956/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com