Как реализовать SQLITE_LIMIT_LENGTH? - PullRequest
0 голосов
/ 30 мая 2019

Я использую SQLite в моих приложениях RN с помощью react-native-sqlite-storage. Затем в одной из моих таблиц есть столбец, который содержит очень длинный string. Когда я пытаюсь insert string, ошибки не возникает. Но когда я select строка, он возвращает null. Этот открытый выпуск похож на мою проблему.

Затем я нашел эту документацию . Он сказал, что

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

Максимальная длина строки или BLOB может быть уменьшена во время выполнения с помощью Интерфейс sqlite3_limit (дБ, SQLITE_LIMIT_LENGTH, размер).

У меня вопрос, если у меня есть этот рабочий код для select данных из таблицы:

const db = await SQLite.openDatabase('databasename', 'default');
db.executeSql('SELECT * FROM tablename', [], (res) => {
  console.log(res.rows.item(0));
}, err => console.log(err));

Как реализовать sqlite3_limit(db, SQLITE_LIMIT_LENGTH, size) в коде выше, чтобы увеличить SQLITE_LIMIT_LENGTH?

1 Ответ

0 голосов
/ 30 мая 2019

Вы не можете легко.Реализация sqlite в Android по умолчанию не предоставляет к ней доступ.Вам нужно будет импортировать свою собственную версию библиотеки Java sqlite (которая на самом деле является библиотекой C, доступ к которой осуществляется через JNI), затем предоставить свой собственный модуль RN для доступа к нему в Java, а затем использовать только этот модуль для доступа к БД.Это много работы.Насколько велика эта строка?Возможно, вы захотите сохранить его в файле и указать имя файла в БД.

Проблема, с которой вы связали, особенно упомянутые изображения.Sqlite - не очень хорошее решение для хранения изображений по разным причинам.Используйте файл и сохраните имя файла для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...