Как реализовать SQLITE_LIMIT_LENGTH?

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

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

During part of SQLite's INSERT and SELECT processing, the complete content of each row in the database is encoded as a single BLOB. So the SQLITE_MAX_LENGTH parameter also determines the maximum number of bytes in a row.

The maximum string or BLOB length can be lowered at run-time using the sqlite3_limit(db,SQLITE_LIMIT_LENGTH,size) interface.

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

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

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

Беглый взгляд на readme для react-native-sqlite-storage показывает, что он не предоставляет интерфейс для sqlite3_limit(). К сожалению, многие языковые привязки sqlite экспортируют только часть C API.

Shawn 30.05.2019 04:17
0
1
334
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Другие вопросы по теме