Android數據庫批量操作

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/huangf321123/article/details/78180836

Android 數據庫批量操作

爲了方便數據庫的批量更新、刪除、插入操作,android系統引入了ContentProviderOperation類。

使用這個類具有以下優點:

1.數據完整性,即所有的操作都在一個事務中執行。

2.由於批量操作在一個事務中執行,只需要打開和關閉一個事務,比多次開關性能要好

3.相比單次操作,批量操作可以提升應用的性能,並且減少佔用CPU的時間,減少電量的消耗。

創建ContentProviderOperation對象,則需要使用ContentProviderOperation.Builder類,通過調用以下靜態函數獲取Builder對象:

newInsert() 創建一個用於執行插入操作的Builder

newUpdate() 創建一個用於執行更新操作的Builder

newDelete() 創建一個用於執行刪除操作的Builder

示例操作:

ArrayList<ContentProviderOperation> ops = new ArrayList<>();
ContentResolver resolver = context.getContentResolver();
try {
    //數據進行批量操作
    for(int i = 0;i < list.size();i++){
        ContentValues values = new ContentValues();
        values.clear();
        values.put(ContentManagerContract.BookOodCards.BOOK_ID, Integer.parseInt(list.get(i).getBook_id()));
        values.put(ContentManagerContract.BookOodCards.OOD_CARD_ID, id);
        values.put(ContentManagerContract.BookOodCards.TYPE, CollectType.get(i));
      ops.add(ContentProviderOperation.newInsert(ContentManagerContract.BookOodCards.CONTENT_URI).withValues(values).build());
    }
    if (ops.size() > 0) {
        //CONTENT_AUTHORITY:數據庫的創建路徑
        resolver.applyBatch(CONTENT_AUTHORITY, ops);
        ops.clear();
    }
} catch (Exception e) {
    e.printStackTrace();
    Log.d(TAG, "insertTpIntoOpsList: Exception !!!");
}

Builder設計模式,Builder對象核心函數

  • withSelection(String selection, String[] selectionArgs)

    指定需要操作的數據條件,只在更新、刪除操作中有用

  • withValue(String key, Object values)

    定義一列的數據值,只在更新、插入數據有用

  • withValues(ContentValues values)

    定義多列的數據值,只在更新、插入數據有用

  • withYieldAllowed(boolean)

  • withValueBackReference(String key, int previousResult)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章