0

我正在使用数据库关注此链接

但它使用“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

4 回答 4

2

我建议您使用DatabaseUtils.InsertHelper

阅读内容以获取更多信息和示例。

正如作者保证:

将 SQLiteDatabase.insert 替换为 DatabaseUtils.InsertHelper 后,数据库插入速度从相当于每秒 95 行左右变为每秒约 525 行。

于 2013-07-10T09:42:35.887 回答
1

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

另外,即使执行时间很短,也可以考虑将操作置于后台,而用户会看到进度条或其他东西。

例子:

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();
}
于 2013-07-10T09:44:59.677 回答
1

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

看来您有一些想要插入数据库的数据。如果这些项目在某种列表中,那么此处给出的答案将起作用。如果您在文件中有项目,那么您需要读取文件并解析项目并将它们添加到数据库中。您不应该编写相同的代码 654 次。

于 2013-07-10T10:00:44.167 回答
-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);

 } 
于 2013-07-10T09:42:39.533 回答