0

由于我实现了搜索功能,我最近将我的数据库更新为 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. 位置是正确的,但删除不起作用。好的,比我尝试简单的删除而不是通过 Android 方法。

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

也不行。似乎COL_KEY_ID = BaseColumns._IDFTS3 中不再存在具有自动递增编号的列?我想通了,我可以使用rowid,但它没有按预期工作。如果我删除我的第一个条目,下面的条目会被奇怪地删除。

我怎样才能让它像以前一样工作? 编辑:现在找到修复..

4

2 回答 2

1

找到修复。不要按ID删除,现在按名称删除。

于 2012-02-07T23:13:06.707 回答
0

我认为问题来自

_ID = ?

_ID 是整数了吗?被字符串替换。你的第二个不工作的方法也是如此。

于 2012-09-22T20:10:13.730 回答