RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Загрузка расширений

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 в имени файла от последнего "/" к первому следующему символу ".", опуская любой начальный "lib". Интерфейс sqlite3_load_extension() возвращает SQLITE_OK при успехе и SQLITE_ERROR, если что-то идет не так, как надо. Если ошибка произойдет, и pzErrMsg не 0, sqlite3_load_extension() должен попытаться заполнить *pzErrMsg текстом сообщения об ошибке, сохраненным в памяти, полученной из sqlite3_malloc(). Функция запроса должна освободить эту память через sqlite3_free().

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

ПРЕДУПРЕЖДЕНИЕ: рекомендуется, чтобы метод SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION использовался только этим интерфейсом. Использование sqlite3_enable_load_extension() нужно избегать. Это будет сохранять функцию SQL load_extension() отключенной и препятствовать тому, чтобы SQL injections имели доступ к возможностям загрузки расширения.

См. также load_extension().