我有一个包含3行_id,名称和编号的表格。我必须更新具有不同值的每一行的列号。 Actualy我的代码是:
ContentValues values;
ContentResolver cr = getContentResolver();
int n[] = new int[10];
// functions to assign the values to n[]
for(int i=1; i<31;i++) {
values = new ContentValues();
values.put("number", n[i]);
cr.update(MyProvider.CONTENT_URI_TABLE, values, "_id="+i, null);
}
通过这种方式,我必须使用大量的UPDATE和多次访问数据库。有一种方法可以简化程序吗?
答案 0 :(得分:7)
为此,我将在ContentResolver上使用applyBatch()方法。基本上,它采用类型ContentProviderOperation的数组来指定您正在更新/插入/删除的内容。
虽然它不会简化您正在编写的代码,但它对您正在访问的内容提供商有益。这样做的好处是内容提供商可以做一些事情,比如在事务中应用这些更新。