Я загружаю db из Интернета. Я сохраняю его в папке с папками данных и открываю его. Внутри db есть таблица "Объявления" с 6 полями. 2 из этих полей - BLOB. Когда я хочу читать из этой таблицы... У меня есть некоторые проблемы... Я заметил, что когда я читал строку с полем blob размером более 1 мегабайта, это вызывает исключение... "получить полевой интервал из строки 0 col 0 не удалось". если это немного blob, все в порядке... спасибо заранее:)
Ограничение размера курсора в Android SQLiteDatabase
Ответ 1
Там существует ограничение на 1 МБ на внутренние активы из-за динамической декомпрессии; предел 1 МБ также, по-видимому, применим к Cobb blobs, но это нигде не документируется.
Как правило, вы должны избегать blobs в SQLite, поскольку они работают плохо; вместо этого сохраните данные blob как файл и сохраните местоположение файла в вашей базе данных.
Ответ 2
Чтение BLOB, которое меньше 100 КБ из базы данных SQLite, быстрее, чем чтение того же из файловой системы. Тем не менее, что-то большее, чем это лучше всего хранить на диске, со ссылкой в db. Подробнее: http://www.sqlite.org/intern-v-extern-blob.html
Ответ 3
На операцию действует ограничение 1 МБ. (Я не уверен, что это за строку или за столбец в случае запросов SQLite). Ограничение связано с тем, что SQLite API взаимодействует с незавершенным процессом sqlite через систему IPC Binder/Parcel. Тот же предел применяется для значений внутри Bundle (например, Intent extras).
Буфер транзакции Binder имеет ограниченный фиксированный размер, в настоящее время 1Mb, который используется всеми транзакциями в процессе процесса.
Смотрите: http://developer.android.com/reference/android/os/TransactionTooLargeException.html
Ответ 4
Является ли запрос, который вы используете, "выбирая" указанный blob? Можете ли вы это пропустить? Если вы не можете, используете ли вы:
blob = rs.getBlob(column) ;
InputStream in = blob.getBinaryStream();
или
blob.getBytes(1, lengthOblob) ;
Первый способ позволит вам прочитать кусок блоха. Второй будет иметь загруженный blob сразу.
Ответ 5
Похоже, что поддержка BLOB в Android еще не реализована...
http://www.basic4ppc.com/forum/basic4android-updates-questions/6648-support-sqlite-blob.html
Какие данные хранятся в полях BLOB? Я бы предпочел фотографии.
Я бы рекомендовал НЕ использовать BLOB. Файловая система - гораздо лучший выбор для двоичных данных.
Можете ли вы подробнее рассказать о том, чего хотите достичь в базе данных?