Room数据库查询报SQLITE_ERROR:不存在negative列问题求助
解决Room查询SQLITE_ERROR:no such column: negative的问题
嘿,这个问题其实是SQL语法里的小细节踩坑了!让我帮你快速搞定:
问题根源
你当前的查询语句里,把字符串值positive用了反引号(`)包裹:
@Query("SELECT amount FROM `Transaction` WHERE transactionType = `positive`") int getAmountPositive();
在SQL规则里,反引号是用来转义表名、列名这类标识符的(比如Transaction是SQL关键字,你用反引号包裹它是正确的操作),但字符串字面量必须用单引号(')来包裹。当你用反引号套住positive时,SQLite会误以为这是一个列名,自然找不到对应的列,于是抛出了no such column的错误。
修正后的正确代码
只需要把positive外面的反引号换成单引号就行:
@Query("SELECT amount FROM `Transaction` WHERE transactionType = 'positive'") int getAmountPositive();
额外提醒
如果你的transactionType对应的是Kotlin枚举类型,Room会自动把枚举名称存储为字符串,上面的写法依然适用。另外要确保数据库里transactionType列存储的实际值确实是'positive'(SQLite默认大小写不敏感,但最好和存储值保持一致避免意外)。
内容的提问来源于stack exchange,提问作者hysabone.com
相关产品推荐
相关产品推荐

