安卓DAO错误有什么问题?

4
我构建我的安卓项目,但是输出以下错误信息, 这个错误来自于安卓dao。
错误:(31,19)错误:不匹配的输入'fromJson',期望{<EOF>, ';', ',', K_ALTER, K_ANALYZE, K_ATTACH, K_BEGIN, K_COMMIT, K_CREATE, K_DELETE, K_DETACH, K_DROP, K_END, K_EXCEPT, K_EXPLAIN, K_FROM, K_GROUP, K_INSERT, K_INTERSECT, K_LIMIT, K_ORDER, K_PRAGMA, K_REINDEX, K_RELEASE, K_REPLACE, K_ROLLBACK, K_SAVEPOINT, K_SELECT, K_UNION, K_UPDATE, K_VACUUM, K_VALUES, K_WHERE, K_WITH, UNEXPECTED_CHAR}。

请提供一个 [mcve],其中包括触发此错误的类的源代码(或至少是 fromJson() 方法)。 - CommonsWare
@CommonsWare 是的,我的Gson类触发了这个错误,我重命名了这个类。 - Jess Yuan
@CommonsWare 我重命名这个类也不起作用... - Jess Yuan
3个回答

6

您的SQL查询语句可能存在语法错误。

请确保在连接查询字符串时,在每行末尾添加一个空格。

@Query("SELECT c.username, c.first_name, c.last_name, r1.water_amount AS waterAmountLastMonth " +
       "FROM citizen c " +
       "INNER JOIN report r1 ON r1.date_month = :dateMonth " +
       "ORDER BY c.first_name ASC")

1

对于我的情况,我编写了错误的查询。我的查询是 -

 @Query("SELECT * " +
                DbConstants.TABLE_MEDICINE + " WHERE " + DbConstants.MEDICINE_ID + " = (:id)")
        fun read(id: Long): LiveData<Medicine>
 /*Notice here,I missed "FROM" query in the query.*/

正确的查询是 -

@Query("SELECT * FROM " +
            DbConstants.TABLE_MEDICINE + " WHERE " + DbConstants.MEDICINE_ID + " = (:id)")
    fun read(id: Long): LiveData<Medicine> /*Include "FROM" now. 

如果有人遇到这种错误,首先要检查SQL查询语句是否正确。


0

我遇到了相同的错误,但原因略有不同。它仍然是一个错误的@Query,但问题出在我的表名上。我的表名中有-,这是无效的。将其删除后问题得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接