Как проверить название дубликатов в базе данных Android?

Я хочу ввести имя и номер телефона из двух редактируемых текстов. Я использую две кнопки, чтобы сохранить и показать их в эмуляторе, используя представление списка. После ввода имени и после нажатия кнопки "Сохранить", как проверить, введено ли уже то же имя. Я новичок в Android объяснение будет действительно полезным.

public void onCreate(SQLiteDatabase db) {

    db.execSQL("CREATE TABLE "+tbname+"("+Key_id+" INTEGER PRIMARY KEY AUTOINCREMENT, "+Key_name+" TEXT,"+Key_mobile+" TEXT)");

}

public void n(String aa, String bb) {
    SQLiteDatabase db=this.getWritableDatabase();
    ContentValues cv=new ContentValues();
    cv.put(Key_name, aa);
    cv.put(Key_mobile, bb);
    db.insert(tbname, Key_name, cv);

    db.close();

}

public Cursor cr()

{
    SQLiteDatabase db=getReadableDatabase();
    String [] colms=new String[]{Key_id+" as _id",Key_name,Key_mobile};
    Cursor cur=db.query(tbname, colms, null, null, null, null, null);
    cur.moveToFirst();
    return cur;



}

2 ответа

Я бы начал с изменения определения вашей таблицы, добавив ограничения NOT NULL и UNIQUE.

db.execSQL("CREATE TABLE "+tbname+"("+Key_id+" INTEGER PRIMARY KEY AUTOINCREMENT, "+Key_name+" TEXT NOT NULL UNIQUE,"+Key_mobile+" TEXT)"); 

Затем у вас есть выбор методов для вставки. Ты можешь использовать:

insertOrThrow вернет идентификатор вашей новой записи или -1 в случае ошибки (а ошибка ограничения, связанная с отсутствием уникального имени, будет ошибкой).

insertWithOnConflict вернет идентификатор новой записи ИЛИ первичный ключ существующей строки, если входной параметр "конфликта-алгоритма" = CONFLICT_IGNORE ИЛИ -1, если возникнет какая-либо ошибка.

Лично я бы использовал insertWithOnConflict с установленным флагом CONFLICT_IGNORE. Таким образом, вы можете вернуть идентификатор строки для дубликата записи (а также не допустить ввода дубликата).

Положил UNIQUE в вашем определении поля таблицы затем используйте insertOrThrow, Если вы вставите то же самое, insertOrThrow вызовет исключение, вы можете его перехватить.

Другие вопросы по тегам