Получение BLOB из базы данных SQLite для Android - PullRequest
3 голосов
/ 07 июня 2011

У меня есть база данных с некоторыми изображениями внутри, сохраненная как BLOB.До сих пор у меня не было проблем с базой данных, я пытаюсь получить BLOB, как и с любыми другими данными, но она не работает:

Cursor c = mDb.query(" ... ");
c.moveToFirst();

ByteArrayInputStream inputStream = new ByteArrayInputStream(c.getBlob(0));
Bitmap b = BitmapFactory.decodeStream(inputStream);

Проблема в том, что я получаю исключение, когдапрограмма пытается получить информацию о c.getBlob (0).Это также не работает для "byte [] b = c.getBlob (0)".

Возможные причины:

  • Файл слишком большой?(1.2Mb)
  • Мне нужно сделать что-то еще, чтобы настроить тип BLOB?

Спасибо!


РЕШЕНО: когда япопробовал случайно с другим файлом это сработало!Затем я понял, что файл был меньше (менее 1 МБ), поэтому проблема, похоже, в размере.

Теперь мой вопрос: можно ли настроить его так, чтобы BLOB поддерживал большие файлы?

Спасибо!

1 Ответ

6 голосов
/ 07 июня 2011

Проверяли ли вы, что на самом деле в вашем курсоре есть данные, прежде чем пытаться что-либо получить?

if(c.getCount() > 0){do something}

если вы не делаете это, вы будете пытаться получить что-то, что уже имеет значение null, которое является БОЛЬШОЙ НЕТ

Также, когда вы получаете элементы, это НЕ хорошая практика для извлечения так: c.getBlob(0)

Другая информация

Причина этого в том, что если вы решите изменить столбцы и изменить порядок, это сильно укусит вас.

Я предлагаю иметь статические переменные, которые существуют в вспомогательном классе, который ссылается на имена столбцов, которые вы определили, например, так:

c.getString(c.getColumnIndex(String columnName))

Это гораздо лучше, так как вы можете легко изменить базу данных, просто сославшись на имя.

Прочтите мой пост здесь о том, как обращаться с базой данных и делать косвенные вызовы к вашей базе данных. Вы будете благодарны за все головные боли, которых вы избежите.

Проверьте здесь: Хранение списков в базе данных и извлечение их всех вместе: Android

Также при публикации вопроса logcat ошибки помогает быстрее решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...