У меня есть база данных Sqlite, в которой строка кода base64 хранится как BLOB.
Почему? Почему бы просто не поместить изображение в BLOB? Что вы получаете путем Base64-кодирования? Это стоит вашего ЦП, времени сборки мусора и места для хранения.
String[] image = new String[100000];
Почему вы думаете, что вам нужно 100 000 String
объектов?
do {image[i] = cursor.getString(1);
i++;}
while (cursor.moveToNext());
Почему вы извлекаете этот столбец для всех строк в наборе результатов, если вы используете только одну из них? Особенно учитывая, что вы, очевидно, делаете все это в главном потоке приложений, и, следовательно, в конечном итоге вы столкнетесь с ошибкой «приложение не отвечает» (ANR)?
Кроме того, если этот столбец объявлен в вашей базе данных как BLOB, вы уверены, что getString()
будет работать так, как вы ожидаете?
Это правильный способ расшифровки?
Это будет зависеть от того, как вы его закодировали.
Должен ли я использовать getString или getBlob?
Это зависит от того, как вы помещаете данные в таблицу и какой тип данных имеет столбец. Они все должны совпадать.
Но я бы просто избавился от всего, что связано с Base64, и сохранил байтовый массив изображений в столбце BLOB, если вам нужно изображение в таблице.