2012-02-01 14 views
0

私は最近、FTS3に自分のデータベースを更新しました。FTS3 | |削除作業をしないでください

マイFTS3テーブル:ContextMenuと私のリストビューから

db.execSQL("CREATE VIRTUAL TABLE " + TABLE_FTS + " USING fts3(" + COL_ID + ", " + COL_KEY_NAME + ", " 
      + COL_KEY_WEBURL + " , " + COL_KEY_MAINURL + ", " + COL_KEY_CODEC + " " + ");"); 

I常にdeletet entrys。 I'amはinfo.positionにそれを変更して、

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は私の地位を得ることはありません:私はこのような方法を使用していました。ポジションは正しいが、削除は機能しない。私はAndroidメソッド経由ではなく単純な削除を試してみました。

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

作業しないでください。オートインクリメント番号のCOL_KEY_ID = BaseColumns._IDという列はもはやFTS3には存在しないようですか?私はrowidを使うことができたが、意図したとおりに動作していないことを理解した。最初のエントリを削除すると、下のエントリが削除されます。

どのように私はこれを前と同じように動作させることができますか? 編集:が見つかりました。

答えて

1

見つかりました。 IDで削除しないで、名前で削除してください。

0

私はこの問題は、_IDはまだ整数である

_ID = ? 

から来ていると仮定しますか? Stringに置き換えられます。あなたの2番目の作業ではないアプローチと同じです。

関連する問題