原理如下:服务器端设计增量表,记录数据操作顺序id,和增删改查信息。在进行数据库表操作的时候同时进行将信息保存在增量表。
android客户端在请求的时候上传最后保存的id。服务端判断最后的id,返回这个id之后的所有操作,客户端根据增删改修改数据库。
/* * 更新单位表 */ public long add(List<ContentValues> units) { boolean flag = false; long res = 0; SQLiteDatabase db = getWritableDatabase(); for (int i = 0; i < units.size(); i++) { ContentValues cv = units.get(i); if (cv.getAsString("isdept").equals("0")) { cv.put("search", name2search(cv.getAsString("name"))); } Log.d(cv.getAsString("type"), (String) cv.get("type")); if (cv.getAsString("type").equals("3")) { // 删除 res = db.delete(TABLE_UNIT, "id = ?", new String[] { cv.getAsString("id") }); Log.d("del", "" + res); } else if (cv.get("type").equals("2")) {// 更新 cv.remove("type"); res = db.update(TABLE_UNIT, cv, "id = ?", new String[] { cv.getAsString("id") }); Log.d("update", "" + res); } else {// 新增 cv.remove("type"); res = db.insert(TABLE_UNIT, null, cv); Log.d("insert", "" + res); } } db.close(); flag = true; r