Я была такая же проблема, как и вы. Мне удалось найти решение для запроса с blob в предложении where, но не для удаления. Поэтому в конце мое решение было первым, чтобы запросить строки, которые я хочу удалить, и использовать идентификатор строки, чтобы удалить его. Вот пример кода. Я предполагаю, что у вас есть столбец с именем 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
sai is ketan answer working ??? –