android dao错误有什么问题?

时间:2017-09-16 13:28:47

标签: android android-room

我构建我的android项目,但是消息输出以下错误, 这个错误来自android dao。

Error:(31, 19) error: mismatched input 'fromJson' expecting {<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}

2 个答案:

答案 0 :(得分:3)

这可能是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 :(得分:0)

对于我来说,我写错了查询。我的查询是-

 @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查询是否正确。