mysql Android房间数据库查询[重复]

rwqw0loc  于 2023-10-15  发布在  Mysql
关注(0)|答案(2)|浏览(122)

此问题已在此处有答案

When to use single quotes, double quotes, and backticks in MySQL(13个回答)
15天前关闭。
我试图从表“组”中获取列“组”的所有值在android room-database.这是我的android room-database中的group表。enter image description here
这是道。我想使用getGroupName()enter image description here
但是当我在MainActivity中使用这个函数并通过打印进行测试时,结果是enter image description here
我想列名是打印的...但我不知道该怎么办。
如果我只想获取列“group”的值,应该怎么做??例如,在这种情况下,[group 1,group 2,groupA]

dfty9e19

dfty9e191#

我同意上面的回答https://stackoverflow.com/a/77204367/8432542
我的版本-
我认为,你的Room DAO类代码片段有几个问题:
1.不正确的引号:您在表和列名(“color”和“group”)周围使用了单引号。在SQL中,单引号用于表示字符串文字,而不是表或列名。如果需要,您应该使用反引号(`)将表名和列名括起来,特别是当它们包含空格或关键字时。
1.使用保留关键字:“group”在SQL中是一个保留关键字,使用保留字作为表名或列名通常不是一个好的做法。如果你坚持使用它,你可以使用反引号来逃避它。
下面是代码的更正版本:

@Query("SELECT `color` FROM `group` WHERE `group` = :groupName")
fun getGroupColor(groupName: String): String

这应该在您的Android应用程序中按预期工作。

5vf7fwbs

5vf7fwbs2#

我可能错了,但我认为查询本身就是问题所在
在SQL中,单引号用于表示字符串文字,而不是列名。
因此,当你试图从“group”表中选择“color”列时,SQL会将“color”解释为字符串文字,而不是列名。
试试这个:

@Query("SELECT color FROM group WHERE group = :groupName")
fun getGroupColor(groupName: String): String

相关问题