android sqlite批量插入,android – 插入大量数据花费大量时间Sqlite

我试图在我的数据库中插入1120条记录(记录=问题,因为它是琐事游戏),但它需要大约20秒,我甚至无法使用insertHelper,因为它已在android中被弃用.

我搜索了很多并使用了beginTransaction(),setTransactionSuccessful()& db.endTransaction();但没有任何帮助.也许我没有正确使用它们所以请纠正我,如果它是错的

助手类

private void addingeachquestions(Questions question) {

SQLiteDatabase db = this.getWritableDatabase();

db.beginTransaction();

try {

ContentValues values = new ContentValues();

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

Questions q1 = new Questions("Who was the first African American to have served as president of United States of America ?", "BAROBAACKMAQCAEMBD", "BARACK", "OBAMA");

this.addingeachquestions(q1);

Questions q2 = new Questions("Who co-founded Apple company with Steve Wozniak, Ronald Wayne ?", "TSOVWIBYUBZRGOEJSE", "STEVE", "JOBS");

this.addingeachquestions(q2);

MainActivityClass

demoHelperClass = new DemoHelperClass(this);

SQLiteDatabase sqLiteDatabase = demoHelperClass.getWritableDatabase();

demoHelperClass.addquestions();

解决方法:

您可以收集数据,将其放入列表中,然后遍历事务中的列表,如下所示:

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);

}

标签:android,sqlite,database

来源: https://codeday.me/bug/20191003/1848546.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值