3

我有一个包含 3 行 _id、名称和编号的表。我必须用不同的值更新每一行的列号。实际上我的代码是:

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 和对数据库的多次访问。有没有办法简化程序?

4

1 回答 1

7

为此,我将在 ContentResolver 上使用applyBatch()方法。基本上,它需要一个ContentProviderOperation类型的数组,用于指定您要更新/插入/删除的内容。

虽然它不会简化您正在编写的代码,但它对您正在访问的内容提供者可能是有益的。这里的好处是内容提供者可以做一些事情,比如在事务中应用这些更新。

于 2012-11-13T14:34:16.913 回答