![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
sqlite3_initialize() инициализирует библиотеку SQLite.
sqlite3_shutdown() освобождает любые ресурсы, которые были ассигнованы
sqlite3_initialize(). Это разработано, чтобы помочь в инициализации процесса
и закрытии во встроенных системах. Приложения рабочей станции, используя
SQLite обычно не должны вызывать ничего из этого. Вызов sqlite3_initialize() является "эффективным" запросом,
если это первый вызов sqlite3_initialize() в течение целой жизни процесса,
или если это первый вызов sqlite3_initialize() после sqlite3_shutdown().
Только эффективный запрос sqlite3_initialize()
делает любую инициализацию. Все другие безопасны и не делают ничего. Вызов sqlite3_shutdown() является "эффективным" запросом, если
это первый запрос sqlite3_shutdown(), начиная с последнего
sqlite3_initialize(). Только эффективный запрос к sqlite3_shutdown()
делает любое завершение. Все другие действительные запросы к
sqlite3_shutdown() не делают ничего. sqlite3_initialize() ориентирован на многопоточное исполнение, но не
sqlite3_shutdown(). sqlite3_shutdown() нужно вызвать только от единственного
потока. Все открытые соединения с базой данных
должны быть закрыты, и все другие ресурсы SQLite должны быть освобождены
до вызова sqlite3_shutdown(). Среди прочего, sqlite3_initialize() вызовет
sqlite3_os_init(). Аналогично sqlite3_shutdown()
вызовет sqlite3_os_end(). sqlite3_initialize() вернет SQLITE_OK
при успехе. Если по некоторым причинам sqlite3_initialize()
не может инициализировать библиотеку (возможно, это не смогло ассигновать
необходимый ресурс, такой как mutex), это возвращает
код ошибки, а не
SQLITE_OK. sqlite3_initialize() вызывает внутренне много других интерфейсов SQLite
так что приложение обычно не должно вызывать напрямую
sqlite3_initialize(). Например, sqlite3_open()
вызывает sqlite3_initialize(), таким образом, библиотека SQLite будет
автоматически инициализирована, когда
sqlite3_open() вызовут, если это не было инициализировано.
Однако, если SQLite собран с выбором времени компиляции
SQLITE_OMIT_AUTOINIT,
автоматические вызовы sqlite3_initialize() опущены, и приложение должно
вызвать sqlite3_initialize() непосредственно до использования любого другого
интерфейса SQLite. Для максимальной мобильности рекомендуется, чтобы запросы
всегда вызвали sqlite3_initialize() непосредственно до использования любого
другого интерфейса SQLite. Будущие выпуски SQLite могут потребовать этого.
Другими словами, поведение, показанное, когда SQLite собран с
SQLITE_OMIT_AUTOINIT, могло бы стать
поведением по умолчанию в некотором будущем выпуске SQLite. sqlite3_os_init() делает инициализацию библиотеки SQLite для
операционной системы. sqlite3_os_end() отменяет эффект sqlite3_os_init().
Типичные задачи, выполненные этим установленным порядком, включают
распределение или освобождение статических ресурсов, инициализацию глобальных
переменных, настраивая умолчание модуля
sqlite3_vfs
или настраивая конфигурацию по умолчанию, используя
sqlite3_config(). Применение никогда не должно вызывать sqlite3_os_init() или
sqlite3_os_end(). Применение должно вызвать только
sqlite3_initialize() и sqlite3_shutdown(). sqlite3_os_init()
вызывает автоматически sqlite3_initialize() и
sqlite3_os_end() вызывает sqlite3_shutdown().
Соответствующие внедрения для sqlite3_os_init() и sqlite3_os_end()
встроены в SQLite, когда это собрано для Unix, Windows или OS/2. Когда
построено для других платформ
(используя выбор времени компиляции
SQLITE_OS_OTHER=1), приложение должно поставлять подходящее внедрение для
sqlite3_os_init() и sqlite3_os_end().
Прикладная предоставленная реализация sqlite3_os_init() или sqlite3_os_end()
должна возвратить SQLITE_OK
при успехе и некоторый другой код ошибки
при сбое.
Choose any three.
SQLite C Interface
Инициализируйте библиотеку SQLite
int sqlite3_initialize(void);
int sqlite3_shutdown(void);
int sqlite3_os_init(void);
int sqlite3_os_end(void);