由于我实现了搜索功能,我最近将我的数据库更新为 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._ID
FTS3 中不再存在具有自动递增编号的列?我想通了,我可以使用rowid
,但它没有按预期工作。如果我删除我的第一个条目,下面的条目会被奇怪地删除。
我怎样才能让它像以前一样工作? 编辑:现在找到修复..