sqllite db сохранено неверно
Я использую SugarORM для Sqllite db, и данные в этой базе данных сохраняются каждые 10 минут с сервера, что делается с помощью сервиса. Теперь при наблюдении за данными, сохраненными в logcat, количество данных, сохраненных в этой БД, показывает неверно. Logcat показывает как показано ниже
I/Sugar: mobstat сохранено: 255322
Я / Сахар: мобстат сохранен: 255323
Я / Сахар: мобстат сохранен: 255117
Я / Сахар: мобстат сохранен: 255118
После достижения 323 он снова показывает 117 и так далее. Что здесь не так.
private void parseJSONresponse(String s)
{
try
{
JSONArray json = new JSONArray(s);
for (int i = 0; i < json.length(); i++)
{
JSONObject e = json.getJSONObject(i);
musers.add(new mobstat(e.getString("name"), e.getString("status"),e.getLong("time")));
SugarRecord.saveInTx(musers);
}
} catch (JSONException e)
{
e.printStackTrace();
}
}
Mobstat sqllite таблица:
import com.orm.SugarRecord;
import com.orm.dsl.Unique;
class mobstat extends SugarRecord {
@Unique
String name;
String status;
long stime;
public mobstat(){ }
mobstat(String name, String status, long stime) {
this.name = name;
this.status = status;
this.stime = stime;
}
}
Мобстат - это мой sqllite db. этот код выполняется каждые 10 секунд для обновления новых данных. Я не делаю никакой проверки, существуют ли данные уже или нет, Sugar ORM перезаписывает значения, которые уже существуют. Это правильный подход? Пожалуйста помоги.
1 ответ
Вы проверяли, действительно ли Sugar перезаписывает ваши данные, или это что-то, что вы предполагаете, основываясь на журналах Sugar?
Каждый раз, когда вы звоните по следующей линии:
SugarRecord.saveInTx(musers);
Вы сохраняете весь список musers
снова.
Журналы, которые вы показываете нам, являются журналами Sugar
это то, о чем вы не должны беспокоиться или смотреть. Я думаю, что ваш код не переопределяет существующие значения в базе данных, так как вы только сохраняете объекты в Sugar
,