![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Этот интерфейс загружает дополнительную библиотеку 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().
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 */
);