我有同樣的問題,因爲你。我設法找到在where子句中用blob查詢的解決方案,但不能刪除。因此,最終我的解決方案首先查詢我想要刪除的行,然後使用行ID將其刪除。這是代碼示例。我假設你有名爲ImageId的列作爲int類型的主鍵。
public Cursor queryImage(final byte[] data, String[] columns) {
return getReadableDatabase().queryWithFactory(
new CursorFactory() {
@Override
public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery, String editTable, SQLiteQuery query) {
query.bindBlob(1, data);
return new SQLiteCursor(db, masterQuery, editTable, query);
}
},
false,
"FavoriteData",
columns,
"Image = ?", null, null, null, null, null);
}
public void favoriteDelete(byte[] byteArray){
Cursor cursor = queryImage(byteArray, new String[]{"ImageId"});
while (cursor.moveToNext()) {
getReadableDatabase().delete("FavoriteData",
"ImageId" + "= ?",
new String[] { String.valueOf(cursor.getInt(0))});
}
}
如果有人有更好的解決方案,我也會感興趣。無論如何,如果你有任何方法來避免使用Blob查詢它會更好,因爲它不是那麼高效。您可以嘗試以某種方式識別圖像,例如使用圖像數據散列進行搜索。
嘗試調整列值和您的參數值。 – Android 2012-03-03 05:03:42
sai是ketan回答工作??? – 2012-03-22 13:13:17