我最近将我的数据库更新为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 + "'");
也不要工作。似乎FTS3中不存在具有自动递增数字的列COL_KEY_ID = BaseColumns._ID
?我想,我可以使用rowid
,但它没有按预期工作。如果我删除了我的第一个条目,下面的命令会被删除。
我怎么能像以前一样让它恢复工作? 修改:现在发现修复..
答案 0 :(得分:1)
找到修复程序。不要按ID删除,现在按名称删除。
答案 1 :(得分:0)
我认为问题来自
_ID = ?
_ID是一个整数了吗?被String替换。你的第二个不工作方法也是如此。