Android SQLite добавить дубликат элемента

#android #sqlite

#Android #sqlite

Вопрос:

Я работаю над sqllite. Я успешно создал базу данных и могу добавлять в нее новые элементы.

 // Adding new contact
public void Add_Contact(Contact contact) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_Tittle, contact.getTitle()); // Contact title
    values.put(KEY_Description, contact.getDescription()); // Contact
                                                            // description

    values.put(KEY_Price, contact.getPrice()); // Contact price

    values.put(KEY_Image, contact.getImage()); // Contact image
    values.put(KEY_Counter, contact.getCounter()); // Contact counter
    // Inserting Row
    db.insert(TABLE_CONTACTS, null, values);

    Log.e("Table Result isss", String.valueOf(values));
    db.close(); // Closing database connection
}
  

Этот код работает идеально, теперь я хочу проверить, могу ли я также сохранить ту же информацию, например, если я сначала сохраню «Привет, Android», а во второй раз попытаюсь сохранить ту же информацию, которую я хочу показать, например: всплывающее сообщение или другое.

Комментарии:

1. Что вы сделали до сих пор?

2. Как вы настраиваете БД? (инструкция create table sql). Принудительно ли база данных вставляет дублирующиеся данные?

3. @user3742085: проверьте мой ответ ниже. Я надеюсь, что это поможет.

Ответ №1:

Сначала создайте функцию, подобную этой:

 public boolean somethingExists(String x) {
        Cursor cursor = database.rawQuery("select 1 from "   TABLE_CONTACTS   " where KEY_Tittle like '%"   x
                  "%'", null);
        boolean exists = (cursor.getCount() > 0);
        cursor.close();
        return exists;
    }
  

А затем перед каждой вставкой вызывайте эту функцию, чтобы вернуть, существует она или нет, как это:

 if (!somethingExists("hello world")) {
     //HERE DO INSERTION if it is not already in Table e.g like call AddContact function here for insertion etc
} else {
    //Display Toast message here "Record already exists"
}
  

ps я просто хотел выделить логику — ваши фактические имена таблиц, схема и логика могут отличаться. В любом случае, попробуйте это — это должно сработать. Предполагается, что фактическая работа должна соответствовать всем ограничениям базы данных, структуре и схеме вашего дизайна.