Co Koder
Co Koder

Reputation: 2221

android check duplicate values before inserting data into database

    String new_recorded_lastname="a lastname";
    ////record to database......
    Cursor cursor = db.rawQuery("SELECT lastname FROM people; ",null);

     if (cursor != null){
  while(cursor.moveToNext()){

    String recorded_lastname=cursor.getString(cursor.getColumnIndex("lastname"));
    if(!(recorded_lastname.equals(new_recorded_lastname))){ 
    //add new_recorded_lastname to database
    break;
    }
    }
    }

I want to have a lastname only once in my database. Even though I check with "if(!(recorded_lastname.equals(new_recorded_lastname)))" this line code to, it adds same records again and again. How can I control a lastname to add only once?

//It works for the first record very well, but starting from the second record, it adds some lastname again and again....

Upvotes: 0

Views: 6836

Answers (1)

K-ballo
K-ballo

Reputation: 81349

It seems to me that you are checking every record in the database, and as soon as you find one that does not contain the given lastname you add the record to the database. You should accumulate the results of the checks, something like this:

boolean lastnamePresent = false;
while(cursor.moveToNext()){
    String recorded_lastname=cursor.getString(cursor.getColumnIndex("lastname"));
    if(recorded_lastname.equals(new_recorded_lastname)){ 
        lastnamePresent = true;
        break;
    }
}

if(!lastnamePresent)
    // add new_record_lastname to database

Though it would sure be better if you use SQLite tools to handle this kind of stuff. Like setting the column to UNIQUE.

Upvotes: 4

Related Questions