Spec-Zone.ru › SQLite

Загрузить расширение

int sqlite3_load_extension(
  sqlite3 *db,          /* Load the extension into this database connection */
  const char *zFile,    /* Name of the shared library containing extension */
  const char *zProc,    /* Entry point.  Derived from zFile if 0 */
  char **pzErrMsg       /* Put error message here if not 0 */
);

Этот интерфейс загружает библиотеку расширения SQLite из указанного файла.

Интерфейс sqlite3_load_extension() пытается загрузить библиотеку расширения SQLite, содержащуюся в файле zFile. Если файл не удаётся загрузить напрямую, предпринимаются попытки загрузить его с различными расширениями имени файла, специфичными для операционной системы. Например, если не удаётся загрузить "samplelib", могут быть также опробованы такие имена, как "samplelib.so", "samplelib.dylib" или "samplelib.dll".

Точка входа задаётся параметром zProc. Значение zProc может быть равно 0, и в этом случае SQLite попытается самостоятельно определить имя точки входа. Сначала проверяется "sqlite3_extension_init". Если это не сработает, проверяются имена вида "sqlite3_X_init", где X состоит из строчных эквивалентов всех букв ASCII или всех букв и цифр ASCII в имени файла между последним "/" и следующей за ним первой "."; начальный фрагмент "lib" при этом опускается. При успешном выполнении интерфейс sqlite3_load_extension() возвращает SQLITE_OK, а при ошибке — SQLITE_ERROR. Если возникает ошибка и pzErrMsg не равен 0, интерфейс sqlite3_load_extension() должен попытаться заполнить *pzErrMsg текстом сообщения об ошибке, хранящимся в памяти, полученной с помощью sqlite3_malloc(). Вызывающая функция должна освободить эту память, вызвав sqlite3_free().

Перед вызовом этого API необходимо разрешить загрузку расширений с помощью sqlite3_enable_load_extension() или sqlite3_db_config(db,SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION,1,NULL), иначе будет возвращена ошибка.

Предупреждение о безопасности: рекомендуется использовать метод SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION, чтобы разрешить только этот интерфейс. Следует избегать использования интерфейса sqlite3_enable_load_extension(). Это оставит SQL-функцию load_extension() отключённой и не позволит SQL-инъекциям предоставить злоумышленникам возможность загружать расширения.

См. также SQL-функцию load_extension().

См. также списки объектов, констант и функций.

SQLite is in the Public Domain.
https://sqlite.org/c3ref/load_extension.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API