我正在开发一个使用Azure Mobile Apps进行离线同步的应用程序(Android),并且我试图获取有关如何向MobileServiceSyncTable创建查询的任何信息(即查询到本地sqlite数据库)。很高兴看到SQL查询和Azure ORM等价,例如:
SELECT ... FROM ... WHERE id = "1" : Query query = QueryOperations.field("id").eq(val("1"));
SELECT ... FROM ... WHERE id <> "1" : Query query = QueryOperations.field("id").ne(val("1"));
SELECT COUNT("id") FROM ... - ???
SELECT ... FROM ... ORDER BY ... DESC - ???
等等。我已经检查了教程和文档,但是教程只显示了简单的用例。如果使用MobileServiceTable(没有脱机同步),语法就像LINQ。但是在使用MobileServiceSyncTable的情况下,语法并不明显。 是否有人使用MS Azure Mobile后端创建了具有脱机同步功能的移动应用程序?
答案 0 :(得分:0)
我查看了源代码&amp;用于Android客户端的Azure移动应用SDK的javadocs,然后我发现类MobileServiceSyncTable
,QueryOperations
&amp;中没有任何方法。 Query
用于直接支持某些功能,如计数行,排序等。
如果要在检索数据时获取计数,可以使用类includeInlineCount()
的方法Query
将inlinecount属性添加到结果中。
否则,似乎有一种计算行或其他查询的解决方法,它来自Android客户端的source code单元测试,它直接在Android上为SQLite构建sql查询以获取数据您想要,因为脱机同步功能用于在SQlite和Azure移动应用之间进行同步。
希望它有所帮助。
根据我的经验,下面的解决方法可以计算行数。
includeInlineCount
方法对大尺寸表进行分页。答案 1 :(得分:0)
我找到了创建有序查询的方法: 在使用WHERE子句进行查询的情况下:
SELECT * FROM <TableName> WHERE <field1>=<value> ORDER BY <field2> DESC :
QueryOperations.field("field1").eq(val("value")).orderBy("<field2>", QueryOrder.Descending);
如果是简单的有序查询(获取所有行):
SELECT * FROM <TableName> ORDER BY <fieldName> DESC :
QueryOperations.field("id").ne(val("")).orderBy("<fieldName>", QueryOrder.Descending);
它很脏,但它有效。构建查询在this tutorial中描述。虽然它是关于MobileServiceTable(没有脱机同步),但语法类似。
但关于COUNT的问题仍未解决。