首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ContentProvider bulkInsert嵌套事务,插入和更新所需

ContentProvider bulkInsert嵌套事务,插入和更新所需
EN

Stack Overflow用户
提问于 2013-09-27 12:50:13
回答 1查看 973关注 0票数 0

我实现了ContentProvider bulkInsert()方法,以便在事务内的表中插入大量行,但在此之后,我需要在另一个表中进行更新,而且只有在大容量插入被提交时才需要这样做。这两个操作需要是原子的,无论是做还是不做,我怎么做呢?

这是bulkInsert方法:

代码语言:javascript
复制
@Override
public int bulkInsert(Uri uri, ContentValues[] values){

    int nrInserted = 0;
    String TABLE;

    int uriType = mUriMatcher.match(uri);


    switch (uriType){
        case FEEDS:
            TABLE = FeedsProviderContract.TABLE_NAME;
            break;
        default:
            throw new IllegalArgumentException( "Unknown URI: " + uri );
    }

    SQLiteDatabase db = mDbHelper.getWritableDatabase();

    //Begin inner transaction
    db.beginTransaction();

    try {

        for (ContentValues cv : values){

            db.insertOrThrow(TABLE, null, cv);

            nrInserted++;
        }

        db.setTransactionSuccessful();

        getContext().getContentResolver().notifyChange(uri,null);

    } catch (SQLException ex){

        ex.printStackTrace();

    }
    finally {
        db.endTransaction();
    }

    return nrInserted;
 }

现在,当我调用它时,我可以这样做一个外部事务吗?我想这不管用。

代码语言:javascript
复制
...

//Begin outer transaction

getContentResolver().getContentProvider().bulkInsert(...);

//Update the other table

//End  outer Transaction
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-30 11:13:33

我需要的是ApplyBatch,而不是BulkInsert,它现在按照我想要的方式工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19051224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档