Проверяли ли вы, что на самом деле в вашем курсоре есть данные, прежде чем пытаться что-либо получить?
if(c.getCount() > 0){do something}
если вы не делаете это, вы будете пытаться получить что-то, что уже имеет значение null, которое является БОЛЬШОЙ НЕТ
Также, когда вы получаете элементы, это НЕ хорошая практика для извлечения так: c.getBlob(0)
Другая информация
Причина этого в том, что если вы решите изменить столбцы и изменить порядок, это сильно укусит вас.
Я предлагаю иметь статические переменные, которые существуют в вспомогательном классе, который ссылается на имена столбцов, которые вы определили, например, так:
c.getString(c.getColumnIndex(String columnName))
Это гораздо лучше, так как вы можете легко изменить базу данных, просто сославшись на имя.
Прочтите мой пост здесь о том, как обращаться с базой данных и делать косвенные вызовы к вашей базе данных. Вы будете благодарны за все головные боли, которых вы избежите.
Проверьте здесь: Хранение списков в базе данных и извлечение их всех вместе: Android
Также при публикации вопроса logcat ошибки помогает быстрее решить проблему.