第一次链接成功时,我使用mTable.insert(accountsFields)上传。上传前,
DbxFields queryParams = new DbxFields().set("uuid",accountsFields.getString("uuid"));
DbxTable.QueryResult results = mTable.query(queryParams);;
Iterator<DbxRecord> it = results.iterator();
if (it.hasNext()) {
DbxRecord firstResult = it.next();
if (firstResult.getDate("dateTime_sync").getTime() < accountsFields.getDate("dateTime_sync").getTime()) {
firstResult.setAll(accountsFields);
}
} else {
mTable.insert(accountsFields);
}
但是,我第一次得到结果为null并插入Duplicate same data.help me
答案 0 :(得分:0)
这可能是一个时间错误。 Sync / Datastores SDK中的所有内容都是异步的。在您链接帐户后,SDK开始从服务器下载数据。如果您立即查询,则不会看到任何内容(因为尚未下载任何数据)。
要解决您的特定问题,最好只使用UUID作为记录ID。有关示例,请参阅https://www.dropbox.com/developers/blog/84/initializing-data-in-datastores-with-getorinsert。基本上就是这样:
String uuid = ...;
DbxRecord record = table.getOrInsert(uuid, new DbxFields().set("foo", "bar"));
这样,你永远不会有重复的记录。如果多个设备上的多个用户或同一用户插入相同的记录,则他们最终都会通过冲突解决方案进行合并,因此您在服务器上永远不会有多个UUID记录。