嗨,我同步我的数据库与服务器上的任何增量的值点击一个按钮。以下是检查所有值并插入数据的代码,但从android的角度来看,是否有任何优化的技术来进行同步
//new fields
public void updatenewfileds(ArrayList<String> s) {
ArrayList<String> da = new ArrayList<String>();
try {
String manu = "select MANUFACTURERID from ManufacturerDesc";
Cursor cc = mDb.rawQuery(manu,null);
Log.d("Cursor count", "Count =" + cc.getCount());
if (cc != null && cc.getCount() > 0) {
if (cc.moveToFirst());
do {
da.add(cc.getString(cc.getColumnIndex("MANUFACTURERID")));
System.out.println("here got all alreday avilable ids"+ cc.getString(cc.getColumnIndex("MANUFACTURERID")));
} while (cc.moveToNext());
cc.close();
} else {
cc.close();
}
// need to add only missing data
for(int i = 0; i<da.size(); i++){
boolean flag = false;
System.out.println(flag);
for(int j=0; j<i; j++){
if(da.get(i).equals(s.get(i*2))){
flag = true;
break;
}
}
if(flag == false){
String sql = "insert into ManufacturerDesc values('"+ s.get(i*2)+"','"+ s.get(i*2+1)+"');";
System.out.println("item inserted into db"+ s.get(i*2) +"******" + s.get(i*2+1) );
mDb.execSQL(sql);
}
}
} catch (SQLException mSQLException) {
Log.e(TAG, "getTestData >>" + mSQLException.toString());
throw mSQLException;
}
}发布于 2013-09-30 14:27:36
这将是我的建议,[]只是为了强调,因为我可能会回到它:
使用这种方法,您可以避免随着时间的推移发送越来越多的信息,因为您只发送在最后一次同步之后更改的行(加上更多)。
如果在服务器上编辑行,只需再次更新time_changed以反映所做的编辑。则它将在下一次同步期间被自动包括并覆盖在设备上。
如果你打算在android设备上进行大量的数据库操作,我建议你试试MotoDev,它可以插入到eclipse中,并且有一些不错的数据库功能。包括数据库透视图和ContentProviders的自动生成(用于简化数据库操作的漂亮类)。
提供完整的解释或指南来完成所有这些都超出了本答案的范围。它应该只是给你一个如何做的想法,如果你想改善你的同步过程,你现在有一些指导。
将机制视为数据库上的自动增量和时间戳,在interwebz上有很多例子可以找到。
快乐编码:)
https://stackoverflow.com/questions/19087041
复制相似问题