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_auto_extension(void(*xEntryPoint)(void));

Этот интерфейс заставляет вызвать функцию xEntryPoint() для каждого нового соединения с базой данных, которое создается. Идея здесь состоит в том, что xEntryPoint() является точкой входа для статически связанного расширения SQLite, которое должно быть автоматически загружено во все новые соединения с базой данных.

Даже при том, что прототип функции показывает, что xEntryPoint() не берет аргументов и вернет void, SQLite вызывает xEntryPoint() с тремя аргументами и ожидает результат целого числа как подпись точки входа следующим образом:

int xEntryPoint(sqlite3 *db, const char **pzErrMsg,
                const struct sqlite3_api_routines *pThunk);

Если xEntryPoint сталкивается с ошибкой, он должен заставить *pzErrMsg указать на соответствующее сообщение об ошибке (полученное из sqlite3_mprintf()) и возвратить соответствующий код ошибки. SQLite гарантирует, что *pzErrMsg NULL прежде, чем вызвать xEntryPoint(). SQLite вызовет sqlite3_free() для *pzErrMsg после возврата xEntryPoint(). Если какой-либо xEntryPoint() возвратит ошибку, sqlite3_open(), sqlite3_open16() или sqlite3_open_v2(), который вызвал xEntryPoint(), потерпит неудачу.

Запрос sqlite3_auto_extension(X) с точкой входа X, которая уже находится в списке автоматических расширений, ничего не сделает. Никакую точку входа не вызовут несколько раз для каждого соединения с базой данных, которое открыто.

См. также: sqlite3_reset_auto_extension() и sqlite3_cancel_auto_extension().