4
我需要插入或更新,我發現SQLiteDatabase方法insertWithOnConflict,但我不知道它是如何檢查該條目是否已經存在。使用insertWithOnConflict更新或插入
理論上我需要一個「Where」參數來檢查某個ID是否存在,如果存在,它應該替換所有其他列。
這是我現在,但我不認爲,第二個參數是唯一的ID
ContentValues args = new ContentValues();
args.put(AppDatabase.COLUMN_ID, entry.getId());
args.put(AppDatabase.COLUMN_NAME, entry.getAppname());
args.put(AppDatabase.COLUMN_URL, entry.getAppUrl());
database.insertWithOnConflict(AppDatabase.TABLE_FILELIST, COLUMN_ID, args, SQLiteDatabase.CONFLICT_REPLACE);
如何管理這種行爲?
謝謝。我已宣佈我的COLUMN_ID爲唯一主要。如果我正確地理解了你,那麼一切都很好,並且如果主鍵重疊,數據庫將檢測到插入數據相等,對嗎? –
等同於唯一列相等的意義。您可以在其他列中具有不相等的值。你可以用一個普通的'insert()'而不用'CONFLICT_REPLACE'來試試 - 你應該得到一個「column ... is not unique」消息的異常。 – laalto