2012-05-18 124 views
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; 
    } 
    } 
    } 

我想在我的數據庫中只有一次姓氏。 即使我檢查「if(!(recorded_lastname.equals(new_recorded_lastname)))」這行代碼,它會一次又一次地添加相同的記錄。我如何控制姓氏只添加一次?android在將數據插入數據庫之前檢查重複值

//它的工作原理的第一條記錄非常好,但是從第二記錄開始,它增加了一些連連名字....

+1

是否有機會修改數據庫字段並將其設置爲「唯一」,以便數據庫爲您完成所有魔術? – yoshi

+0

是的,我可以修改數據庫,所以如果我這樣做,它會好嗎?如果(!(recorded_lastname.equals(new_recorded_lastname))){{//將new_recorded_lastname添加到數據庫 } catch(Exception e){///} break; } –

回答

3

在我看來,你正在檢查數據庫中的每個記錄,並且只要找到一個不包含給定姓氏的記錄,就將該記錄添加到數據庫中。你應該積累檢查的結果,這樣的事情:

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

+0

是的,我該如何解決它? –

+0

如果我使用UNIQUE,我需要檢查一下嗎? –

+2

如果您使用'UNIQUE',那麼當您試圖插入一個重複的姓時,您將會遇到錯誤。如何應對這種錯誤取決於您的應用程序邏輯。 –

相關問題