Как вставить собственное изображение в таблицу SQLite?

Я сделал таблицу с информацией о пользователе, уже сохраненной в ней. Когда пользователь регистрируется с идентификатором, все данные, такие как имя пользователя, курс, извлекаются из таблицы, если идентификатор совпадает. Теперь я хочу добавить изображения профиля в свою таблицу информации о пользователе. Почти все учебные пособия в Интернете посвящены сохранению фотографии с телефона в эту базу данных и ее извлечению. Но я не хочу этого. Я хотел бы добавить в таблицу разные изображения для каждого пользователя, т.е. оно должно быть специфичным для пользователя. Теперь я знаю, что используется тип данных BLOB, и изображения должны быть преобразованы в байты. Но я не знаю, где я должен хранить изображения, будь то в моем телефоне или в моей папке res. Или, может быть, хранить его в Интернете. Я смущен. Я должен отметить, что это не идеальное приложение, это просто модель.


person Prince Persia    schedule 10.02.2019    source источник
comment
Храните изображения в памяти телефона, а не в базе данных, если это не связано с безопасностью.   -  person Binary Baba    schedule 10.02.2019
comment
тогда как мне указать путь и получить его?   -  person Prince Persia    schedule 10.02.2019
comment
Хранение BLOBS – наихудшая практика.   -  person Phantômaxx    schedule 10.02.2019


Ответы (2)


Одним из наиболее важных факторов, который следует учитывать, является размер изображений. Если размер, вероятно, превысит, скажем, 200 КБ, то возрастает риск возникновения проблем не с сохранением изображения в базе данных, а с его извлечением.

Без написания вашей собственной альтернативы CursorWindow тогда CursorWindow (буфер для хранения подгруппы строк в курсоре) ограничен размером 2M (в более поздних версиях в некоторых, я полагаю, это был 1M). Если размер изображения приближается к 2 МБ, его невозможно извлечь (даже без учета места для других столбцов).

Таким образом, обычно рекомендуемый подход заключается в том, чтобы не хранить изображения, а хранить средства извлечения изображения из хранилища файлов в другом месте (вы упомянули папку res, что может быть хорошо, но вам может потребоваться учитывать размер APK) , вы можете сохранить путь к файлу в базе данных.

Существует более полный ответ, который охватывает вышеизложенное, включая хранение небольших изображений в БД и более крупных изображений в другом месте (папка активов) здесь

person MikeT    schedule 10.02.2019

Для всех, у кого есть такой же вопрос, как у меня, я нашел этот учебник является самым простым способом хранения изображений и их извлечения. Он использует внешнюю базу данных sqlite для хранения изображений и информации и доступа к ней на странице Java для отображения, что мне показалось довольно простым.

person Prince Persia    schedule 13.02.2019