gpt4 book ai didi

android - 房间数据库中的硬编码 bool 查询

转载 作者:IT王子 更新时间:2023-10-28 23:57:46 33 4
gpt4 key购买 nike

我正在构建一个 Android 应用程序,它会为用户显示潜在匹配项列表。用户可以点击一个点赞用户,我把所有点赞都保存在本地。

我可以编写一个查询来获取匹配列表,如下所示:

@Query("SELECT * FROM match WHERE liked = :liked ORDER BY match DESC LIMIT :limit")
fun getMatches(limit: Int = 6, liked: Boolean = true): Flowable<List<Match>>

我了解到这很好用。但是,我没有预见到我会将 liked 设置为 false 的任何情况,所以我很好奇是否有办法对我的 bool 条件进行硬编码?如果我尝试:

@Query("SELECT * FROM match WHERE liked = true ORDER BY match DESC LIMIT :limit")

我在编译时收到以下错误:

Error:(8, 0) Gradle: error: There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (no such column: true)

如何在我的查询字符串中硬编码这个 bool 值?

我也试过了:

  • 将条件用单引号括起来
    • @Query("SELECT * FROM match WHERE like = 'true' ORDER BY match DESC LIMIT :limit")

最佳答案

SQLite 没有 bool 数据类型。 Room 将其映射到 INTEGER 列,将 true 映射到 1 并将 false 映射到 0.

所以,我希望这会起作用:

@Query("SELECT * FROM match WHERE liked = 1 ORDER BY match DESC LIMIT :limit")

请记住,此行为未记录在案。但是,它不应该改变——至少在没有警报响起的情况下不会改变——因为我们需要使用迁移来处理任何变化。

关于android - 房间数据库中的硬编码 bool 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47730820/

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