Максимальная длина Android Sqlite String?

Относительно этого вопроса:

Как SQLite на Android обрабатывает длинные строки?

В нем говорится, что по умолчанию SQLite хранит 1 миллиард. Это то же самое, что и фактический сайт.

Однако, как утверждает человек, это может быть меньше. Мне было интересно, если это способ проверить/что это за значение?

Спасибо!

Ответ 1

Невозможно прочитать ограничения SQLite в Android во время выполнения. (SQLite имеет функцию для этого в своем C API, но Android не раскрывает это.)

В любом случае, я не знаю ни одного Android-разработчика, который уменьшил любой из ограничений SQLite. (Как правило, они увеличивают некоторый предел или позволяют использовать некоторые опции, когда им это нужно в своих приложениях или когда они пытаются оптимизировать, но они никогда не потрудились что-то изменить.)

Ответ 2

Максимальная длина строки или BLOB

Максимальное количество байтов в строке или BLOB в SQLite определяется макросом препроцессора SQLITE_MAX_LENGTH. Значение по умолчанию этого макроса составляет 1 миллиард (1 тысяча миллионов или 1 000 000 000). Вы может повысить или уменьшить это значение во время компиляции с использованием командной строки такой вариант:

-DSQLITE_MAX_LENGTH=123456789 

Текущая реализация будет поддерживать только длину строки или BLOB до 231-1 или 2147483647. И некоторые встроенные функции, такие как hex(), могут завершиться задолго до этой точки. В чувствительных к безопасности приложений, лучше не пытаться максимальная длина строки и длина блока. На самом деле, вы могли бы максимальная длина строки и длины блока до чего-то большего в диапазоне несколько миллионов, если это возможно.

Во время обработки SQLite INSERT и SELECT полное содержимое каждой строки в базе данных кодируется как один BLOB. Так Параметр SQLITE_MAX_LENGTH также определяет максимальное количество байтов в строке.

От http://www.sqlite.org/limits.html.