![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Этот интерфейс заставляет вызвать функцию xEntryPoint()
для каждого нового соединения с базой данных,
которое создается. Идея здесь состоит в том, что xEntryPoint()
является точкой входа для статически связанного
расширения SQLite,
которое должно быть автоматически загружено во все новые
соединения с базой данных. Даже при том, что прототип функции показывает, что xEntryPoint()
не берет аргументов и вернет void, SQLite вызывает xEntryPoint()
с тремя аргументами и ожидает результат целого числа как подпись точки
входа следующим образом: Если 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().
Choose any three.
SQLite C Interface
Автоматическая загрузка статически связанных расширений
int sqlite3_auto_extension(void(*xEntryPoint)(void));
int xEntryPoint(sqlite3 *db, const char **pzErrMsg,
const struct sqlite3_api_routines *pThunk);