当前位置: 首页 > 知识库问答 >
问题:

房间:在查询中使用变量

萧晓博
2023-03-14

我在我的应用程序中使用了Room DB,我想在查询中将列名作为变量,这样我就可以“在运行中”(在调用该方法时)对其进行操作。

示例代码(“name”假设是一个变量,表示一列):

@Query("UPDATE Products SET :name = :value WHERE prod_id = :prod_id")
    int updateName(String name,String value, String prod_id);

我试过了,但它没有编译,错误是它需要获取一个列而不是一个字符串。

有没有办法把一个列作为变量?

共有3个答案

相化
2023-03-14

我知道这有点晚了,但也许它会对其他人有用。你可以尝试使用@RawQuery,它接受支持SQLiteQuery作为值,然后用老式的方式写你的查询

胡彭亮
2023-03-14

正如Commonware在他对原始帖子的评论中所说,这在Room中是不可能的,甚至在SQLite编写的声明中也是不可能的。

虽然我没有引用SQLite prepared语句功能,但如果您查看此处Room的查询注释文档,您会看到它声明“[该]查询在编译时经过验证……以确保它可以针对数据库进行良好编译。”。对于动态列名,这应该是不可能的。您还会注意到,对查询的解释有一定的深度,但变量表和列名等内容明显缺失。

戚飞雨
2023-03-14

我知道这个答案很古老,但自从我来到这里,它仍然是有用的。

现在你可以用变量编写查询了,语法和你用的完全一样。医生是这么说的:

@Query("SELECT * FROM user WHERE user_name LIKE :name AND last_name LIKE :last")
     public abstract List<User> findUsersByNameAndLastName(String name, String last);

@Query("SELECT * FROM user WHERE uid IN(:userIds)")
     public abstract List findByIds(int[] userIds);

查询文档可以在这里找到。

 类似资料:
  • 我是新来的和我试图我的得到一个从它。我试图这样做的它与这是id但问题是我不知道如何返回目标从。 这就是<代码>刀 这是Repository类

  • 我正在尝试获取消息的地图,作者id键如下: 这是我尝试过的: MessageViewModel.getAll()方法返回: 然后我将其转换为一个可流动的流(Flowable::fromIterable),这样它可以一次发出一个项目,而不是整个列表,然后我使用“toMultiMap”进行映射 on成功方法从不被调用,我不知道这里出了什么问题。如果我不使用toMultiMap(并对代码进行相应的修改)

  • 问题内容: 我正在尝试编写一个函数,该函数采用下面编写的函数中编写的变量,然后在 MySQL 查询中使用该变量。我在下面写了一个例子: 当我尝试运行该程序时,出现以下错误: 这是用于大学作业,必须使用格式来接收变量。我花了数小时在互联网上搜索,试图找到解决方案,请帮助:/ 问题答案:

  • 问题内容: 我在编写sql从表中获取可用空间时遇到问题。 我的表结构如下。 一个房间可以链接到许多预订,一个预订可以包含很多房间 我已经尝试过了,但是如果一个房间在两个不同的日期链接到两个不同的预订会比较麻烦,那么只有第一个预订ID才能进行比较 有人可以帮我编写SQL,以便在入住和退房之间获得可用的房间。 问题答案: 如果您想要的只是在所需日期的整个范围内可用的房间列表,那么类似以下的方法可能会起

  • 我正在将一个应用程序从普通的迁移到使用,我遇到的一个问题是,有几个查询具有用户可配置的order by语句,这意味着它们可以更改查看列表顺序的方式。 房间里似乎不允许动态order by语句,所以我必须针对每个order by语句进行单独的查询。 有没有人找到更好的方法来解决这个问题,这样我就可以有一个查询语句,其中唯一需要改变的是order by子句,而不是必须编写15个基本相同的额外查询语句?

  • 问题内容: 我在编写sql以从表中获取可用房间时遇到问题。我的表结构如下。 表:预订 桌子:房间 包含有关房间的详细信息,该表的主键是room_id,它具有1至10个房间,共10个房间。 我的问题是我想知道这些房间在2012年9月14日6:00 pm至21-09-2012 9:00 am之间可用,这意味着我应该只将room_id的结果作为1,3,5,7,8 ,9,10。 有人可以帮我编写SQL来从