Насколько большим (в КБ) может быть строка типа TEXT в БД SQL? - PullRequest
0 голосов
/ 31 января 2011

Я кодирую изображения с помощью Base64 в строки и загружаю эти изображения в удаленную базу данных в строке таблицы USER. Эта строка TEXT, потому что я не знаю, есть ли другой тип String с большим пространством, чем TEXT.

Когда я сохраняю очень маленькие изображения, с 5 или 10 КБ места, они сохраняют ОК, и когда я возвращаю эти изображения из БД sql в свое приложение, я могу декодировать их в BitMap и показывать их в ImageView.

ПРОБЛЕМА: Когда я сохраняю изображения размером, например, 110 КБ, я думаю, что они не сохраняют OK в строке TEXT моей таблицы USER в базе данных SQL, потому что, когда я пытаюсь декодировать их, я получил ошибку, они не могут быть декодированы, но я не знаю почему, потому что функция декодирования Base64 просто возвращает ноль, когда он не может декодировать.

Есть способ решить мою проблему?

Насколько большим (в КБ) может быть строка типа TEXT в БД SQL?

Является ли использование TEXT лучшим вариантом здесь? Или есть другой тип, который может хранить гораздо более длинные строки (например, намного больше, чем 100 КБ)?

спасибо

Ответы [ 2 ]

3 голосов
/ 31 января 2011

Я бы использовал BLOB вместо TEXT.

Тем не менее, я думаю, что лучшим подходом было бы сохранение патчей изображений в БД, в то время как изображения хранятся на SDCard. Причиной этого является то, что БД хранится во внутренней памяти устройства (во многих случаях доступно всего 20-50 МБ). Таким образом, если изображений много, можно использовать всю внутреннюю память, что делает устройство практически неработоспособным.

0 голосов
/ 31 января 2011

Когда вы вставляете данные в столбец, помеченный как TEXT, они преобразуются в одну из поддерживаемых кодировок символов. Вам следует взглянуть на определения SQLite 3 Datatypes . Я хотел бы представить, что вы хотите, чтобы ваши данные хранились в BLOB-объекте, поскольку вы хотите, чтобы необработанные данные хранились независимо от фактической кодированной строки.

...