sqllite db保存计数错误

时间:2017-02-06 11:10:45

标签: android sqlite sugarorm

我正在使用SugarORM用于Sqllite数据库,并且此数据库中的数据每10分钟从服务器保存一次,这是通过使用该服务完成的。现在,在观察保存在此数据库中的logcat数据中保存的数据时显示错误。 Logcat显示如下

  

I / Sugar:mobstat已保存:255322
我/ Sugar:mobstat已保存:255323   
我/糖:mobstat已保存:255117
我/糖:mobstat已保存:   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;
    }
}

mobstat是我的sqllite数据库。此代码每10秒运行一次以更新新数据。我没有检查数据是否已经存在,Sugar ORM会覆盖已经存在的值。这是正确的方法吗?请帮忙。

1 个答案:

答案 0 :(得分:0)

您是否检查过Sugar是否真的覆盖了您的数据,还是根据Sugar的日志确定了它?

每次拨打下一行时:

SugarRecord.saveInTx(musers);

您再次保存musers的整个列表。

您向我们展示的日志是Sugar的日志,这是您不应该担心或看到的。我认为您的代码不会覆盖数据库中的现有值,因为您只将对象保存到Sugar