Inserting Bulk data taking lot of time Sqlite

前端 未结 2 1181
[愿得一人]
[愿得一人] 2020-12-22 12:48

I am trying to insert 1120 records (records=questions since it is trivia game) in my database but it is taking around 20secs i can\'t even work with insertHelper because it

2条回答
  •  爱一瞬间的悲伤
    2020-12-22 13:29

    You can collect your data, put it in a list, then iterate through the list inside a transaction like so:

    private void addAllQuestions(Arraylist allQuestions) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.beginTransaction();
        try {
            ContentValues values = new ContentValues();
    
            for (Questions question: allQuestions) {
                values.put(QUESTION, question.getQUESTION());
                values.put(OPTION1, question.getOPT1());
                values.put(ANSWER, question.getANSWER());
                values.put(ANSWER2, question.getANSWER2());
                db = this.getWritableDatabase();
                db.insert(TABLE_NAME, null, values);        
            }
    
            db.setTransactionSuccessful();
    
        } finally {
            db.endTransaction();
        }
    }
    
    public void addquestions() {
        //famous people
        ArrayList allQuestions = new ArrayList();
    
        allQuestions.append(new Questions("Who was the first African American to have served as president of United States of America ?", "BAROBAACKMAQCAEMBD", "BARACK", "OBAMA"));
    
        allQuestions.append(new Questions("Who co-founded Apple company with Steve Wozniak, Ronald Wayne ?", "TSOVWIBYUBZRGOEJSE", "STEVE", "JOBS"));
    
        this.addAllQuestions(allQuestions);
    }
    

    Based on this: https://stackoverflow.com/a/32088155/4268599

提交回复
热议问题