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 еще целое число? заменяется строкой. То же самое для вашего второго не рабочего подхода.