181 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html><head>
 | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | |
| <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 | |
| <link href="../sqlite.css" rel="stylesheet">
 | |
| <title>Initialize The SQLite Library</title>
 | |
| <!-- path=../ -->
 | |
| </head>
 | |
| <body>
 | |
| <div class=nosearch>
 | |
| <a href="../index.html">
 | |
| <img class="logo" src="../images/sqlite370_banner.gif" alt="SQLite" border="0">
 | |
| </a>
 | |
| <div><!-- IE hack to prevent disappearing logo --></div>
 | |
| <div class="tagline desktoponly">
 | |
| Small. Fast. Reliable.<br>Choose any three.
 | |
| </div>
 | |
| <div class="menu mainmenu">
 | |
| <ul>
 | |
| <li><a href="../index.html">Home</a>
 | |
| <li class='mobileonly'><a href="javascript:void(0)" onclick='toggle_div("submenu")'>Menu</a>
 | |
| <li class='wideonly'><a href='../about.html'>About</a>
 | |
| <li class='desktoponly'><a href="../docs.html">Documentation</a>
 | |
| <li class='desktoponly'><a href="../download.html">Download</a>
 | |
| <li class='wideonly'><a href='../copyright.html'>License</a>
 | |
| <li class='desktoponly'><a href="../support.html">Support</a>
 | |
| <li class='desktoponly'><a href="../prosupport.html">Purchase</a>
 | |
| <li class='search' id='search_menubutton'>
 | |
| <a href="javascript:void(0)" onclick='toggle_search()'>Search</a>
 | |
| </ul>
 | |
| </div>
 | |
| <div class="menu submenu" id="submenu">
 | |
| <ul>
 | |
| <li><a href='../about.html'>About</a>
 | |
| <li><a href='../docs.html'>Documentation</a>
 | |
| <li><a href='../download.html'>Download</a>
 | |
| <li><a href='../support.html'>Support</a>
 | |
| <li><a href='../prosupport.html'>Purchase</a>
 | |
| </ul>
 | |
| </div>
 | |
| <div class="searchmenu" id="searchmenu">
 | |
| <form method="GET" action="../search">
 | |
| <select name="s" id="searchtype">
 | |
| <option value="d">Search Documentation</option>
 | |
| <option value="c">Search Changelog</option>
 | |
| </select>
 | |
| <input type="text" name="q" id="searchbox" value="">
 | |
| <input type="submit" value="Go">
 | |
| </form>
 | |
| </div>
 | |
| </div>
 | |
| <script>
 | |
| function toggle_div(nm) {
 | |
| var w = document.getElementById(nm);
 | |
| if( w.style.display=="block" ){
 | |
| w.style.display = "none";
 | |
| }else{
 | |
| w.style.display = "block";
 | |
| }
 | |
| }
 | |
| function toggle_search() {
 | |
| var w = document.getElementById("searchmenu");
 | |
| if( w.style.display=="block" ){
 | |
| w.style.display = "none";
 | |
| } else {
 | |
| w.style.display = "block";
 | |
| setTimeout(function(){
 | |
| document.getElementById("searchbox").focus()
 | |
| }, 30);
 | |
| }
 | |
| }
 | |
| function div_off(nm){document.getElementById(nm).style.display="none";}
 | |
| window.onbeforeunload = function(e){div_off("submenu");}
 | |
| /* Disable the Search feature if we are not operating from CGI, since */
 | |
| /* Search is accomplished using CGI and will not work without it. */
 | |
| if( !location.origin || !location.origin.match || !location.origin.match(/http/) ){
 | |
| document.getElementById("search_menubutton").style.display = "none";
 | |
| }
 | |
| /* Used by the Hide/Show button beside syntax diagrams, to toggle the */
 | |
| function hideorshow(btn,obj){
 | |
| var x = document.getElementById(obj);
 | |
| var b = document.getElementById(btn);
 | |
| if( x.style.display!='none' ){
 | |
| x.style.display = 'none';
 | |
| b.innerHTML='show';
 | |
| }else{
 | |
| x.style.display = '';
 | |
| b.innerHTML='hide';
 | |
| }
 | |
| return false;
 | |
| }
 | |
| </script>
 | |
| </div>
 | |
| <!-- keywords: sqlite3_initialize sqlite3_os_end sqlite3_os_init sqlite3_shutdown -->
 | |
| <div class=nosearch>
 | |
| <a href="intro.html"><h2>SQLite C Interface</h2></a>
 | |
| <h2>Initialize The SQLite Library</h2>
 | |
| </div>
 | |
| <blockquote><pre>
 | |
| int sqlite3_initialize(void);
 | |
| int sqlite3_shutdown(void);
 | |
| int sqlite3_os_init(void);
 | |
| int sqlite3_os_end(void);
 | |
| </pre></blockquote>
 | |
| <p>
 | |
| The sqlite3_initialize() routine initializes the
 | |
| SQLite library.  The sqlite3_shutdown() routine
 | |
| deallocates any resources that were allocated by sqlite3_initialize().
 | |
| These routines are designed to aid in process initialization and
 | |
| shutdown on embedded systems.  Workstation applications using
 | |
| SQLite normally do not need to invoke either of these routines.</p>
 | |
| 
 | |
| <p>A call to sqlite3_initialize() is an "effective" call if it is
 | |
| the first time sqlite3_initialize() is invoked during the lifetime of
 | |
| the process, or if it is the first time sqlite3_initialize() is invoked
 | |
| following a call to sqlite3_shutdown().  Only an effective call
 | |
| of sqlite3_initialize() does any initialization.  All other calls
 | |
| are harmless no-ops.</p>
 | |
| 
 | |
| <p>A call to sqlite3_shutdown() is an "effective" call if it is the first
 | |
| call to sqlite3_shutdown() since the last sqlite3_initialize().  Only
 | |
| an effective call to sqlite3_shutdown() does any deinitialization.
 | |
| All other valid calls to sqlite3_shutdown() are harmless no-ops.</p>
 | |
| 
 | |
| <p>The sqlite3_initialize() interface is threadsafe, but sqlite3_shutdown()
 | |
| is not.  The sqlite3_shutdown() interface must only be called from a
 | |
| single thread.  All open <a href="../c3ref/sqlite3.html">database connections</a> must be closed and all
 | |
| other SQLite resources must be deallocated prior to invoking
 | |
| sqlite3_shutdown().</p>
 | |
| 
 | |
| <p>Among other things, sqlite3_initialize() will invoke
 | |
| sqlite3_os_init().  Similarly, sqlite3_shutdown()
 | |
| will invoke sqlite3_os_end().</p>
 | |
| 
 | |
| <p>The sqlite3_initialize() routine returns <a href="../rescode.html#ok">SQLITE_OK</a> on success.
 | |
| If for some reason, sqlite3_initialize() is unable to initialize
 | |
| the library (perhaps it is unable to allocate a needed resource such
 | |
| as a mutex) it returns an <a href="../rescode.html">error code</a> other than <a href="../rescode.html#ok">SQLITE_OK</a>.</p>
 | |
| 
 | |
| <p>The sqlite3_initialize() routine is called internally by many other
 | |
| SQLite interfaces so that an application usually does not need to
 | |
| invoke sqlite3_initialize() directly.  For example, <a href="../c3ref/open.html">sqlite3_open()</a>
 | |
| calls sqlite3_initialize() so the SQLite library will be automatically
 | |
| initialized when <a href="../c3ref/open.html">sqlite3_open()</a> is called if it has not be initialized
 | |
| already.  However, if SQLite is compiled with the <a href="../compile.html#omit_autoinit">SQLITE_OMIT_AUTOINIT</a>
 | |
| compile-time option, then the automatic calls to sqlite3_initialize()
 | |
| are omitted and the application must call sqlite3_initialize() directly
 | |
| prior to using any other SQLite interface.  For maximum portability,
 | |
| it is recommended that applications always invoke sqlite3_initialize()
 | |
| directly prior to using any other SQLite interface.  Future releases
 | |
| of SQLite may require this.  In other words, the behavior exhibited
 | |
| when SQLite is compiled with <a href="../compile.html#omit_autoinit">SQLITE_OMIT_AUTOINIT</a> might become the
 | |
| default behavior in some future release of SQLite.</p>
 | |
| 
 | |
| <p>The sqlite3_os_init() routine does operating-system specific
 | |
| initialization of the SQLite library.  The sqlite3_os_end()
 | |
| routine undoes the effect of sqlite3_os_init().  Typical tasks
 | |
| performed by these routines include allocation or deallocation
 | |
| of static resources, initialization of global variables,
 | |
| setting up a default <a href="../c3ref/vfs.html">sqlite3_vfs</a> module, or setting up
 | |
| a default configuration using <a href="../c3ref/config.html">sqlite3_config()</a>.</p>
 | |
| 
 | |
| <p>The application should never invoke either sqlite3_os_init()
 | |
| or sqlite3_os_end() directly.  The application should only invoke
 | |
| sqlite3_initialize() and sqlite3_shutdown().  The sqlite3_os_init()
 | |
| interface is called automatically by sqlite3_initialize() and
 | |
| sqlite3_os_end() is called by sqlite3_shutdown().  Appropriate
 | |
| implementations for sqlite3_os_init() and sqlite3_os_end()
 | |
| are built into SQLite when it is compiled for Unix, Windows, or OS/2.
 | |
| When <a href="../custombuild.html">built for other platforms</a>
 | |
| (using the <a href="../compile.html#os_other">SQLITE_OS_OTHER=1</a> compile-time
 | |
| option) the application must supply a suitable implementation for
 | |
| sqlite3_os_init() and sqlite3_os_end().  An application-supplied
 | |
| implementation of sqlite3_os_init() or sqlite3_os_end()
 | |
| must return <a href="../rescode.html#ok">SQLITE_OK</a> on success and some other <a href="../rescode.html">error code</a> upon
 | |
| failure.
 | |
| </p><p>See also lists of
 | |
|   <a href="objlist.html">Objects</a>,
 | |
|   <a href="constlist.html">Constants</a>, and
 | |
|   <a href="funclist.html">Functions</a>.</p>
 |