0
    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;
    }
    }
    }

データベースで姓を 1 回だけ使用したい。この行コードを「if(!(recorded_lastname.equals(new_recorded_lastname)))」でチェックしても、同じレコードが何度も追加されます。姓を一度だけ追加するように制御するにはどうすればよいですか?

//最初のレコードでは非常にうまく機能しますが、2 番目のレコードから開始して、姓を何度も追加します....

4

1 に答える 1

4

データベース内のすべてのレコードをチェックしているように思えますが、指定された姓を含まないレコードを見つけるとすぐに、そのレコードをデータベースに追加します。次のように、チェックの結果を蓄積する必要があります。

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

この種のものを処理するためにSQLiteツールを使用する方が確かに良いでしょう. 列を に設定するようにUNIQUE

于 2012-05-18T19:18:05.073 に答える