FTS3 | Грубые проблемы | удалить не работает - PullRequest
0 голосов
/ 01 февраля 2012

Я недавно обновил свою базу данных до 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 ]

1 голос
/ 08 февраля 2012

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

0 голосов
/ 23 сентября 2012

Я полагаю, проблема в

_ID = ?

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

...