Reputation: 81
i am following this link using database
but it uses "ContentValues" to insert data into database
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName()); // Contact Name
values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone`..
but i have 654 number of items to insert..
therefore i need to write these lines 654 times..is there any alternative way to do this...
Upvotes: 0
Views: 1214
Reputation: 116080
the best thing to optimize the speed of making a lot of operations to the DB is using transactions for batch operations.
also, even if it takes a short time to execute, consider putting the operation in the background, while the user sees a progressBar or something.
example:
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();
}
Upvotes: 1
Reputation: 1333
The question is not about how to insert values into database.
It seems you have some data you wish to insert into a database. If the items are in a list of some sort then the answers given here would work. If you have the items in a file then you would need to read the file and parse the items and add them into the database. You should not write the same code 654 times.
Upvotes: 1
Reputation: 62209
I'd recommend you to use DatabaseUtils.InsertHelper.
Read this for more info and example.
As the author assures:
After replacing SQLiteDatabase.insert with DatabaseUtils.InsertHelper, the database insertion speed went from the equivalent of about 95 rows per second to about 525 rows per second.
Upvotes: 2
Reputation: 1244
try like this
create 2 Arraylist for name and number. Add all the names and numbers using for loop
like this
arralistname.add(contact.getName());
arralistnumber.add(contactgetPhoneNumber());
then use for loop to insert
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);
}
Upvotes: -3