Ограничение размера курсора в Android SQLiteDatabase

Я загружаю db из Интернета. Я сохраняю его в папке с папками данных и открываю его. Внутри db есть таблица «Объявления» с 6 полями. 2 из этих полей – BLOB. Когда я хочу читать из этой таблицы … У меня есть некоторые проблемы … Я заметил, что когда я читал строку с полем blob размером более 1 мегабайта, это вызывает исключение … »получить полевой интервал из строки 0 col 0 не удалось ". Если это немного blob, все в порядке … спасибо заранее 🙂

Solutions Collecting From Web of "Ограничение размера курсора в Android SQLiteDatabase"

В результате динамической декомпрессии существует предел 1MB на внутренние активы; Предел 1 МБ также, по-видимому, применим к курсорным блокам, но это нигде не документируется.

Как правило, вы должны избегать blobs в SQLite, поскольку они работают плохо; Вместо этого сохраните данные blob как файл и сохраните местоположение файла в вашей БД.

Чтение BLOB, которое меньше 100 КБ из базы данных SQLite, быстрее, чем чтение того же из файловой системы. Тем не менее, что-то большее, чем это лучше всего хранить на диске, со ссылкой в ​​db. Подробнее: http://www.sqlite.org/intern-v-extern-blob.html

Для каждой операции существует ограничение 1 МБ. (Я не уверен, что это за строку или за столбец в случае запросов SQLite). Это ограничение связано с тем, что SQLite API взаимодействует с незавершенным процессом sqlite через систему IPC Binder / Parcel. Тот же предел применяется для значений внутри Bundle (например, Intent extras).

Буфер транзакции Binder имеет ограниченный фиксированный размер, в настоящее время 1 Мб, который совместно используется всеми транзакциями, выполняемыми для процесса.

См .: http://developer.android.com/reference/android/os/TransactionTooLargeException.html.

Является ли запрос, который вы используете, «выбираете» указанный blob? Можете ли вы это пропустить? Если вы не можете, используете ли вы:

blob = rs.getBlob(column) ; InputStream in = blob.getBinaryStream(); 

или

  blob.getBytes(1, lengthOblob) ; 

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

Похоже, что поддержка BLOB в Android еще не реализована …

http://www.basic4ppc.com/forum/basic4android-updates-questions/6648-support-sqlite-blob.html

Какие данные хранятся в полях BLOB? Я бы предпочел фотографии.

Я бы рекомендовал НЕ использовать BLOB. Файловая система – гораздо лучший выбор для двоичных данных.

Можете ли вы объяснить немного больше о том, чего хотите достичь в базе данных?