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 に置き換えた後、データベースの挿入速度は 1 秒あたり約 95 行から 1 秒あたり約 525 行になりました。

于 2013-07-10T09:42:35.887 に答える
1

DB に対して多くの操作を行う速度を最適化する最善の方法は、バッチ操作にトランザクションを使用することです。

また、実行に時間がかからない場合でも、ユーザーがプログレスバーなどを見ている間、操作をバックグラウンドに置くことを検討してください。

例:

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 に答える
-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 に答える