私はSQLiteDatabase.CONFLICT_IGNOREを使ってinsertWithOnConflictを呼び出しています。ただし、競合が発生すると、既存の行のIDの代わりに "-1"が返されます。これを修正するにはどうすればよいですか?Android:SQLite - insertWithOnConflict
表の作成:
EDIT:
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);
戻り値-1は、エラーが発生したことを意味します。一意の(競合しない)行を挿入すると-1も返されますか? –
@Graham Borland:いいえ、競合しない挿入は、正しい行IDを返します。 – meeeee