int sqlite3_initialize(void);int sqlite3_shutdown(void);int sqlite3_os_init(void);int sqlite3_os_end(void);

La rutina sqlite3_initialize() inicializa la biblioteca SQLite. La rutina sqlite3_shutdown() desasigna los recursos asignados por sqlite3_initialize(). Estas rutinas están diseñadas para ayudar en la inicialización y cierre de procesos en sistemas integrados. Las aplicaciones de estación de trabajo que utilizan SQLite normalmente no necesitan invocar ninguna de estas rutinas.

Una llamada a sqlite3_initialize() es una llamada “efectiva” si es la primera vez que se invoca a sqlite3_initialize() durante la duración del proceso, o si es la primera vez que se invoca a sqlite3_initialize() después de una llamada a sqlite3_shutdown(). Solo una llamada efectiva de sqlite3_initialize() realiza una inicialización. Todas las demás llamadas son inofensivas sin operaciones.

Una llamada a sqlite3_shutdown() es una llamada “efectiva” si es la primera llamada a sqlite3_shutdown() desde la última sqlite3_initialize(). Solo una llamada efectiva a sqlite3_shutdown() realiza una desinicialización. Todas las demás llamadas válidas a sqlite3_shutdown() son inofensivas sin operaciones.

La interfaz sqlite3_initialize() es segura para subprocesos, pero sqlite3_shutdown() no lo es. La interfaz sqlite3_shutdown() solo debe llamarse desde un único subproceso. Todas las conexiones de bases de datos abiertas deben cerrarse y todos los demás recursos de SQLite deben desasignarse antes de invocar sqlite3_shutdown().

Entre otras cosas, sqlite3_initialize() invocará sqlite3_os_init(). De manera similar, sqlite3_shutdown() invocará sqlite3_os_end().

La rutina sqlite3_initialize() devuelve SQLITE_OK en caso de éxito. Si por alguna razón, sqlite3_initialize() no puede inicializar la biblioteca (quizás no puede asignar un recurso necesario, como un mutex), devuelve un código de error que no sea SQLITE_OK.

Muchas otras interfaces de SQLite llaman internamente a la rutina sqlite3_initialize(), por lo que una aplicación normalmente no necesita invocar sqlite3_initialize() directamente. Por ejemplo, sqlite3_open() llama a sqlite3_initialize() para que la biblioteca SQLite se inicialice automáticamente cuando se llame a sqlite3_open() si aún no se ha inicializado. Sin embargo, si SQLite se compila con la opción de tiempo de compilación SQLITE_OMIT_AUTOINIT, se omiten las llamadas automáticas a sqlite3_initialize() y la aplicación debe llamar a sqlite3_initialize() directamente antes de usar cualquier otra interfaz de SQLite. Para una máxima portabilidad, se recomienda que las aplicaciones siempre invoquen sqlite3_initialize() directamente antes de usar cualquier otra interfaz de SQLite. Las versiones futuras de SQLite pueden requerir esto. En otras palabras, el comportamiento exhibido cuando SQLite se compila con SQLITE_OMIT_AUTOINIT podría convertirse en el comportamiento predeterminado en alguna versión futura de SQLite.

La rutina sqlite3_os_init() realiza una inicialización específica del sistema operativo de la biblioteca SQLite. La rutina sqlite3_os_end() deshace el efecto de sqlite3_os_init(). Las tareas típicas realizadas por estas rutinas incluyen la asignación o desasignación de static recursos, inicialización de variables globales, configuración de un módulo sqlite3_vfs predeterminado o configuración predeterminada usando sqlite3_config().

La aplicación nunca debe invocar sqlite3_os_init() o sqlite3_os_end() directamente. La aplicación solo debe invocar sqlite3_initialize() y sqlite3_shutdown(). La interfaz sqlite3_os_init() es llamada automáticamente por sqlite3_initialize() y sqlite3_os_end() es llamada por sqlite3_shutdown(). Las implementaciones apropiadas para sqlite3_os_init() y sqlite3_os_end() están integradas en SQLite cuando se compila para Unix, Windows u OS/2. Cuando se crea para otras plataformas (usando la opción de tiempo de compilación SQLITE_OS_OTHER=1), la aplicación debe proporcionar una implementación adecuada para sqlite3_os_init() y sqlite3_os_end(). Una implementación proporcionada por la aplicación de sqlite3_os_init() o sqlite3_os_end() debe devolver SQLITE_OK en caso de éxito y algún otro código de error en caso de falla.

Consulte también las listas de objetos, constantes y funciones.