Вставить если не существует? - PullRequest
0 голосов
/ 12 апреля 2011

Я предлагаю пользователю добавить элемент в SQLiteDb.Когда они нажимают «добавить», я хочу проверить, существует ли этот элемент ... если его нет, я хочу вставить его.

Я звоню

mDbHelper.createNote(inputLine.getText().toString().trim(), mTable[i]);

Какие звонки...

public long createNote(String value, String table) {
        ContentValues initialValues = new ContentValues();
        initialValues.put(table, value);

        return mDb.insert(table, null, initialValues);
    }

Это работает, но не проверяет, существует ли элемент, поэтому он все еще вставляет дубликаты.Поэтому я попытался

return mDb.insertWithOnConflict(table, null, initialValues, SQLiteDatabase.CONFLICT_FAIL);

Однако он не распознает insertWIthOnConflict или SQLiteDatabase.CONFLICT_FAIL ...

Как мне заставить это работать?

Редактировать: это 1 таблица, 2 строки.имя таблицы = примечание, строки = _id, примечание.

Ответы [ 4 ]

2 голосов
/ 12 апреля 2011

Используйте команду ЗАМЕНА

1 голос
/ 12 апреля 2011

В такой ситуации я выполняю такую ​​проверку:

if (!checkRecordExist(DATABASE_TABLE, new String[] {KEY_1, KEY_2}, new String[] {value_1, value_2})) 
database.insert(DATABASE_TABLE, null, updateValues);

, где

private boolean checkRecordExist(String tableName, String[] keys, String [] values) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < keys.length; i++) {
        sb.append(keys[i])
            .append("=\"")
            .append(values[i])
            .append("\" ");
        if (i<keys.length-1) sb.append("AND ");
    }

    Cursor cursor = database.query(tableName, null, sb.toString(), null, null, null, null);
    boolean exists = (cursor.getCount() > 0);
    cursor.close();
    return exists;
}
0 голосов
/ 12 апреля 2011

Вы пытались использовать первичный ключ, для которого не установлено автоматическое увеличение? Возможно, поэтому команда REPLACE не работает

0 голосов
/ 12 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...