2012-02-01 76 views
0

我最近更新我的數據庫到FTS3,因爲我執行了搜索功能。FTS3 | rowid問題|刪除不工作

我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總是deletet entrys。我用這樣的方法:

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但它沒有按預期工作。如果我刪除了我的第一個條目,那麼下面的代碼會被奇怪地刪除。

我如何才能像以前一樣恢復工作? 編輯:發現現在修復..

回答

1

找到修復。不要按ID刪除,現在按名稱刪除。

0

我認爲問題來自

_ID = ? 

_ID是一個整數嗎?被一個String替換。你的第二個不工作的方法也一樣。