FTS3 | Грубые проблемы | удалить не работает

Я недавно обновил свою базу данных до FTS3 из-за того, что добавил функциональность поиска.

Моя таблица FTS3:

    db.execSQL("CREATE VIRTUAL TABLE " + TABLE_FTS + " USING fts3(" + COL_ID + ", " + COL_KEY_NAME + ", "
            + COL_KEY_WEBURL + " , " + COL_KEY_MAINURL + ", " + COL_KEY_CODEC + " " + ");");

Я всегда удаляю записи из моего списка с помощью ContextMenu, Я использовал такой метод:

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
delete(info.id);
updateList();


public void delete(long id) {
    int numDeleted = database.delete("stations" , "_ID = ?", new String[] { Long.toString(id) } );
    Log.d(TAG, "delete(): id=" + id + " -> " + numDeleted);
}

public void updateList() {
    data.requery();
    dataSource.notifyDataSetChanged();
}

Метод, info.id не принимайте меня за должность, поэтому я изменил ее на info.position, Положение правильное, но delet не работает. Хорошо, тогда я попробовал простое удаление вместо метода Android.

database.execSQL("DELETE FROM " + DatabaseHelper.TABLE_FTS + " WHERE " + DatabaseHelper.COL_ID + "='" + id + "'");

Не работай тоже. Кажется, что колонна, COL_KEY_ID = BaseColumns._ID с автоинкрементным числом больше не существует в FTS3? Я понял, что я мог бы использовать rowid но это не работает, как задумано. Если я удалю свою первую запись, записи ниже будут странно удалены.

Как я могу вернуть это обратно, как раньше?Изменить: Найдено сейчас исправить..

2 ответа

Решение

Нашел исправление. Не удалять по ID, удалить сейчас по имени.

Я предполагаю, что проблема исходит от

_ID = ?

_ID еще целое число? заменяется строкой. То же самое для вашего второго не рабочего подхода.

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