【问题标题】:Adding note to specific id in ROOM database using Kotlin使用 Kotlin 向 ROOM 数据库中的特定 id 添加注释
【发布时间】:2019-11-18 21:00:53
【问题描述】:

由于某种原因,我无法将我的笔记添加到我选择的每个日期都具有特定 ID 的数据库中。在过去一周左右的课余时间里,我一直试图在业余时间解决这个问题,但我一生都无法弄清楚。

它的目的是从 calendarView 中选择日期,并为从 DB 调用的每个日期提供特定的注释。涉及更多代码,但不相关,因为这是在创建实体/对象时发生错误的地方(我不知道数据库中的某些内容被调用)。

下面是我的 DAO 中的代码。我一直在尝试在 insertNote 函数中添加一个 id 参数,但它只是显示为红色。

@Dao
interface NotesDao {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insertNote(note: Notes)

    @Update
    fun updateNote(note: Notes)

    @Delete
    fun deleteNote(note: Notes)

    @Query("SELECT * FROM Notes WHERE id == :id")
    fun getNotesByID(id: Int): List<Notes>
}

下面是我尝试通过调用 DAO 在数据库中创建对象的方式,但它在 this?.insertNote(notes) 行之后崩溃。

var notes = Notes(id = date, name = noteText)

with(notesDao) {
    this?.insertNote(notes)
}

这是我用来创建它的实体。

@Entity
data class Notes(
    @PrimaryKey val id: Int?,
    val name: String
)

如果这太含糊,我很抱歉。

【问题讨论】:

  • 这似乎不是问题。这只是使用日期作为 id。

标签: android database sqlite kotlin


【解决方案1】:

好的,我解决了这个问题,但它太啰嗦了,我无法追溯我所做的所有更改。因此,我将简要介绍一下。

我不得不更改数据库构建器类中的版本。然后我还必须添加一个迁移功能,当我这样做时,数据库可以正常工作并且不会崩溃。虽然,它仍然没有完全按照我的意愿去做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2022-06-29
    • 2018-04-25
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2018-12-14
    相关资源
    最近更新 更多