美文网首页android devAndroid开发Android知识
ContentProvider - 重写bulkInsert()

ContentProvider - 重写bulkInsert()

作者: 康熙微博私访记 | 来源:发表于2016-09-27 22:36 被阅读98次

    默认重写bulkInsert方法

        @Override
        public int bulkInsert(Uri uri, ContentValues[] values) {
            return super.bulkInsert(uri, values);
        }
    

    bulkInsert()方法内部实现

    /**
    * Override this to handle requests to insert a set of new rows, or the
    * default implementation will iterate over the values and call
    * {@link #insert} on each of them.
    * As a courtesy, call {@link ContentResolver#notifyChange(android.net.Uri ,android.database.ContentObserver) notifyChange()}
    * after inserting.
    * This method can be called from multiple threads, as described in
    * <a href="{@docRoot}guide/topics/fundamentals/processes-and-threads.html#Threads">Processes
    * and Threads</a>.
    *
    * @param uri The content:// URI of the insertion request.
    * @param values An array of sets of column_name/value pairs to add to the database.
    *    This must not be {@code null}.
    * @return The number of values that were inserted.
    */
    public int bulkInsert(Uri uri, ContentValues[] values) {
        int numValues = values.length;
        for (int i = 0; i < numValues; i++) {
            insert(uri, values[i]);
        }
        return numValues;
    }
    

    重写bulkInsert() - 事务处理

    /**
     * 批量插入,调用方法如下:
     *
     * ContentValues[] arrayValues = new ContentValues[10];
     * //实例化每一个ContentValues
     * int count = resolver.bultInsert(Student.CONTENT_URI,arrayValues);
     *
     * @param uri
     * @param values
     * @return
     */
    @Override
    public int bulkInsert(Uri uri, ContentValues[] values) {
        //return super.bulkInsert(uri, values);
        int numValues = 0;
        db.beginTransaction(); //开始事务
        try {
            //数据库操作
            numValues = values.length;
            for (int i = 0; i < numValues; i++) {
                insert(uri, values[i]);
            }
            db.setTransactionSuccessful(); //别忘了这句 Commit
        } finally {
            db.endTransaction(); //结束事务
        }
        return numValues;
    }

    相关文章

      网友评论

        本文标题:ContentProvider - 重写bulkInsert()

        本文链接:https://www.haomeiwen.com/subject/sakhyttx.html