我正在使用SQLiteDatabase.CONFLICT_IGNORE调用insertWithOnConflict。但是,发生冲突时,将返回“-1”而不是现有行的ID。我该如何纠正?

表创建:

编辑:

String CREATE_CATEGORY_TABLE = "CREATE TABLE "+TABLE_CATEGORY+"(" +
    BaseColumns._ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+
    KEY_CATEGORY_NAME+" TEXT UNIQUE" +
    ")";
db.execSQL(CREATE_CATEGORY_TABLE);

插入语句:
ContentValues values = new ContentValues();
values.put(KEY_CATEGORY_NAME, name);
int catID = (int) db.insertWithOnConflict(TABLE_CATEGORY, null, values, SQLiteDatabase.CONFLICT_IGNORE);

最佳答案

根据此问题,使用SQLiteDatabase.CONFLICT_IGNORE的insertWithOnConflict无法按预期工作,应完全避免使用:
https://code.google.com/p/android/issues/detail?id=13045

关于Android:SQLite-insertWithOnConflict,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12361863/

10-10 16:28