将大量数据插入sqlite数据库

时间:2013-07-10 09:33:24

标签: java android database sqlite android-database

我正在关注此链接 using database

但它使用“ContentValues”将数据插入数据库

 ContentValues values = new ContentValues();
 values.put(KEY_NAME, contact.getName()); // Contact Name
 values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone`..

但我要插入654个项目..因此我需要写这些行654次..有没有其他方法可以做到这一点......

4 个答案:

答案 0 :(得分:2)

我建议您使用DatabaseUtils.InsertHelper

阅读this了解更多信息和示例。

作者保证:

  

用DatabaseUtils.InsertHelper替换SQLiteDatabase.insert后,数据库插入速度从大约每秒95行到每秒约525行。

答案 1 :(得分:1)

优化对数据库进行大量操作的速度的最佳方法是使用事务进行批处理操作。

另外,即使执行时间很短,也可以考虑将操作放在后台,同时用户会看到progressBar等。

示例:

db.beginTransaction();
try{
 for(Contact contact : contacts)
   {
   ContentValues values = new ContentValues();
   values.put(KEY_NAME, contact.getName()); 
   values.put(KEY_PH_NO, contact.getPhoneNumber()); 
   db.insert(tablename,values,null,null);
   }
 db.setTransactionSuccessful();// marks a commit
}
finally{
 db.endTransaction();
}

答案 2 :(得分:1)

问题不在于如何将值插入数据库。

您希望将某些数据插入数据库中。如果项目在某种列表中,则此处给出的答案将起作用。如果文件中有项目,则需要读取文件并解析项目并将其添加到数据库中。你不应该写相同的代码654次。

答案 3 :(得分:-3)

试试这样
为名称和编号创建2个Arraylist。使用for循环添加所有名称和数字 像这样

 arralistname.add(contact.getName());
 arralistnumber.add(contactgetPhoneNumber());

然后使用for循环插入

 for(int i=0;i<arralistname.size();i++)
 {
 ContentValues values = new ContentValues();
 values.put(KEY_NAME,arralistname.get(i)); // Contact Name
 values.put(KEY_PH_NO,arralistnumber.get(i)); // C

 db.insert(tablename,values,null,null);

 }