2010-11-26 170 views

回答

26

基本上它是好的,但因爲你沒有提供的代碼,我只可以發佈2種可能的方式爲它

第一:

// In your content provider 
public Uri insert(...) { 
    long insertId = db.insert(...); 

    if(insertId == -1) { 
     // insert failed, do update 
     db.update(...); 
    } 
} 

二:

public Uri insert(...) { 
    long insertId = db.insertWithOnConflict(table, null, values, SQLiteDatabase.CONFLICT_REPLACE) 

    if(insertId == -1) { 
     // insert and update/replace failed 
    } 
} 

退房SQLiteDatabase供第四參數參考。在大多數情況下,最後一種方法應該是足夠的,除非您希望只有某些字段在行存在時被更新,並且如果不存在所有字段。

對於insertWithOnConflict最有用的需求可能是,你可以插入一行,如果它已經存在,忽略插入,而是返回已存在行的Uri /主鍵。

5

這是你的選擇,你在你的重寫方法中寫的。 所以,沒關係。

我不知道你在做什麼,但你也許想看看SQLiteDatabasereplace()方法。也許它更適合你的需求。

+0

好的我的問題是,我需要檢查一列是否存在A列中的某個值(A不是唯一鍵)。 如果是,我需要更新這一行。 – Mak 2010-11-26 12:53:51