withValueBackReference

来源:互联网 发布:嘉兴乐玩网络 编辑:程序博客网 时间:2024/04/28 17:27

在对数据库进行批量操作的时候,经常会用到这个方法, 查找了如下文章,讲到了一个关键所在,previousResult这个参数是引用的前面一个数据库操作的返回值,比如第一个数据库操作是向raw_contacts表中插入数据, 那么就会得到raw_contacts_id,我们要使用这个ID继续向data表中插入数据。

 

ContentProviderOperation.Builder的withValueBackReference函数定义如下:

ContentProviderOperation.BuilderwithValueBackReference(String key, int previousResult)

Add a ContentValues back reference.
第一个参数key对应于数据库中的列名,第二个参数previousResult代表着:回引数据库批量操作中的第previousResult个数据库操作的返回值。
总的来说就是说把批量数据库操作中的第previousResult个数据库操作的返回值作为列名为key的记录的值
ContentProviderOperation.BuilderwithValueBackReferences(ContentValues backReferences)
Add a ContentValues of back references.
同上,只是把2个参数封装成一个参数。

第一个参数key对应于数据库中的列名,第二个参数previousResult代表着:回引数据库批量操作中的第previousResult个数据库操作的返回值。
总的来说就是说把批量数据库操作中的第previousResult个数据库操作的返回值作为列名为key的记录的值

 

ContentProviderOperation.BuilderwithValueBackReference(String key, int previousResult)
Add a ContentValues back reference.
第一个参数key对应于数据库中的列名,第二个参数previousResult代表着:回引数据库批量操作中的第previousResult个数据库操作的返回值。
总的来说就是说把批量数据库操作中的第previousResult个数据库操作的返回值作为列名为key的记录的值
ContentProviderOperation.BuilderwithValueBackReferences(ContentValues backReferences)
Add a ContentValues of back references.
同上,只是把2个参数封装成一个参数。
示例1:
来源http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html
 ArrayList<ContentProviderOperation> ops =
         
new ArrayList<ContentProviderOperation>();
 
...
 
int rawContactInsertIndex = ops.size();
 ops
.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
         
.withValue(RawContacts.ACCOUNT_TYPE, accountType)
         
.withValue(RawContacts.ACCOUNT_NAME, accountName)
         
.build());

 ops
.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
         
.withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
         
.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
         
.withValue(StructuredName.DISPLAY_NAME, "Mike Sullivan")
         
.build());

 getContentResolver
().applyBatch(ContactsContract.AUTHORITY, ops);
 

Note the use of withValueBackReference(String, int) to refer to the as-yet-unknown index value of the raw contact inserted in the first operation.

结束!