2015-06-22 3 views
0

В моей Android приложения я использую скомпилированных заявления, чтобы иметь возможность быстро вставлять строки:Android SQLite: Быстрая вставка/обновление

insert = db.compileStatement(
        "INSERT INTO foo (id, aaa, bbb, ccc) " + 
        "VALUES (?,?,?,?)"); 

Это работает правильно и достаточно быстро. Однако, когда уже foo с id, я получаю следующее исключение:

column id is not unique (code 19) 

Что бы правильный путь для перезаписи существующей строки?

+0

Если вы хотите перезаписать его, используйте инструкцию 'UPDATE'. –

ответ

5

Что было бы правильным способом для перезаписи существующей строки?

Уточняйте conflict resolution strategy, такие как

INSERT OR REPLACE INTO foo ... 

Если вставка приведет к конфликту, конфликтующие строки (ы) сначала удаляются, а затем вставляется новая строка.

+0

Это сработает, но будьте осторожны! Убедитесь, что это то, что вам нужно для ваших требований. Помните, что это сначала «удаляет» строку, если она существует, а затем заменяет ее новой строкой. Это НЕ то же самое, что обновление строки. Если вам действительно нужно обновить строку, но не удалить ее, вы можете сначала сделать простой запрос к таблице, чтобы определить, существует ли она, а затем выполнить обновление, если это так, в противном случае сделать вставку. – dvsoukup

 Смежные вопросы

  • Нет связанных вопросов^_^