Keshri_raj
Keshri_raj

Reputation: 81

Inserting huge number of data into sqlite database

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

Answers (4)

android developer
android developer

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

user2138983
user2138983

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

azizbekian
azizbekian

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

Senthil
Senthil

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

Related Questions