在编译过程中,如何修复android studio房间中复杂sql语句的验证错误?
我的DAO查询语句之一当前有一个sql语句:在编译过程中,如何修复android studio房间中复杂sql语句的验证错误?,android,sqlite,compiler-errors,android-room,Android,Sqlite,Compiler Errors,Android Room,我的DAO查询语句之一当前有一个sql语句: @Query( "select " + " avg(q1.weight) over (rows between 3 PRECEDING AND CURRENT ROW) as adjusted_weight " + "from weight_record AS q1 " + "order by q1.date" ) LiveD
@Query(
"select " +
" avg(q1.weight) over (rows between 3 PRECEDING AND CURRENT ROW) as adjusted_weight " +
"from weight_record AS q1 " +
"order by q1.date"
)
LiveData<List<AggregatedWeightRecord>> getAggregatedRecords();
@Query(
“选择”+
“平均(q1.重量)超过(前3行和当前行之间的行)作为调整后的重量”+
“从作为q1的重量记录”+
“第一季度订单。日期”
)
LiveData getAggregatedRecords();
当我直接在sqlite3中尝试这个查询时,它可以完美地工作。当我把它放在Android Studio中并尝试编译时,我得到了以下错误:
error: extraneous input '(' expecting {<EOF>, ';', K_ALTER, K_ANALYZE, K_ATTACH, K_BEGIN, K_COMMIT, K_CREATE, K_DELETE, K_DETACH, K_DROP, K_END, K_EXPLAIN, K_INSERT, K_PRAGMA, K_REINDEX, K_RELEASE, K_REPLACE, K_ROLLBACK, K_SAVEPOINT, K_SELECT, K_UPDATE, K_VACUUM, K_VALUES, K_WITH, UNEXPECTED_CHAR}
extraneous input ')' expecting {<EOF>, ';', K_ALTER, K_ANALYZE, K_ATTACH, K_BEGIN, K_COMMIT, K_CREATE, K_DELETE, K_DETACH, K_DROP, K_END, K_EXPLAIN, K_INSERT, K_PRAGMA, K_REINDEX, K_RELEASE, K_REPLACE, K_ROLLBACK, K_SAVEPOINT, K_SELECT, K_UPDATE, K_VACUUM, K_VALUES, K_WITH, UNEXPECTED_CHAR}
错误:无关输入“('expecting{,'”,K_ALTER,K_ANALYZE,K_ATTACH,K_BEGIN,K_COMMIT,K_CREATE,K_DELETE,K_DETACH,K_DROP,K_END,K_EXPLAIN,K_INSERT,K_PRAGMA,K_REINDEX,K_RELEASE,K_REPLACE,K_ROLLBACK,K_保存点,K_SELECT,K_更新,K_真空,K_值,K_WITH,意外字符}
无关输入“')预期{,;”,K_更改,K_分析,K_附加,K_开始,K_提交,K_创建,K_删除,K_分离,K_删除,K_结束,K_解释,K_插入,K_PRAGMA,K_重新索引,K_释放,K_替换,K_回滚,K_保存点,K_选择,K_更新,K_真空,K_值,K_带,意外字符}
我已尝试更改查询,但现在需要使用windows。我还在@Query之前添加了@SkipQueryVerification,但仍然得到了错误
我可以选择哪些选项来编译此文件并同时使用LiveData?简而言之,您必须使用不使用窗口函数的替代查询 年引入了对窗口功能的支持,因此在上使用了 官方Android列表中支持的最高版本是SQLite 3.19。因此,OVER是无效语法,不能使用窗口函数。
用
@RawQuery
试试看。如果失败,那么这表明存在合法的SQLite语法问题,SQLite自身的错误可能会给您提供更多线索(字符串连接问题?)。如果@RawQuery
有效,这至少是您的解决方法。请尝试使用变量保存查询语句,然后在@query(variable)中使用变量谢谢您提供的信息。对于每个可能认为这个答案有用的人来说,解决方案是将笛卡尔或交叉连接与自动增量列相结合。这将是混乱但可行的。