1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
3
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
4
<title>Initialize The SQLite Library</title>
5
<style type="text/css">
8
font-family: Verdana, sans-serif;
13
a:visited { color: #734559 }
15
.logo { position:absolute; margin:3px; }
31
.toolbar a { color: white; text-decoration: none; padding: 6px 12px; }
32
.toolbar a:visited { color: white; }
33
.toolbar a:hover { color: #044a64; background: white; }
35
.content { margin: 5%; }
36
.content dt { font-weight:bold; }
37
.content dd { margin-bottom: 25px; margin-left:20%; }
38
.content ul { padding:0px; padding-left: 15px; margin:0px; }
41
.se { background: url(../images/se.gif) 100% 100% no-repeat #044a64}
42
.sw { background: url(../images/sw.gif) 0% 100% no-repeat }
43
.ne { background: url(../images/ne.gif) 100% 0% no-repeat }
44
.nw { background: url(../images/nw.gif) 0% 0% no-repeat }
46
/* Things for "fancyformat" documents start here. */
47
.fancy img+p {font-style:italic}
48
.fancy .codeblock i { color: darkblue; }
49
.fancy h1,.fancy h2,.fancy h3,.fancy h4 {font-weight:normal;color:#044a64}
50
.fancy h2 { margin-left: 10px }
51
.fancy h3 { margin-left: 20px }
52
.fancy h4 { margin-left: 30px }
53
.fancy th {white-space:nowrap;text-align:left;border-bottom:solid 1px #444}
54
.fancy th, .fancy td {padding: 0.2em 1ex; vertical-align:top}
55
.fancy #toc a { color: darkblue ; text-decoration: none }
56
.fancy .todo { color: #AA3333 ; font-style : italic }
57
.fancy .todo:before { content: 'TODO:' }
58
.fancy p.todo { border: solid #AA3333 1px; padding: 1ex }
59
.fancy img { display:block; }
60
.fancy :link:hover, .fancy :visited:hover { background: wheat }
61
.fancy p,.fancy ul,.fancy ol { margin: 1em 5ex }
62
.fancy li p { margin: 1em 0 }
63
/* End of "fancyformat" specific rules. */
69
<div><!-- container div to satisfy validator -->
71
<a href="../index.html">
72
<img class="logo" src="../images/sqlite370_banner.gif" alt="SQLite Logo"
74
<div><!-- IE hack to prevent disappearing logo--></div>
75
<div class="tagline">Small. Fast. Reliable.<br>Choose any three.</div>
77
<table width=100% style="clear:both"><tr><td>
78
<div class="se"><div class="sw"><div class="ne"><div class="nw">
79
<table width=100% style="padding:0;margin:0;cell-spacing:0"><tr>
82
<a href="../about.html">About</a>
83
<a href="../sitemap.html">Sitemap</a>
84
<a href="../docs.html">Documentation</a>
85
<a href="../download.html">Download</a>
86
<a href="../copyright.html">License</a>
87
<a href="../news.html">News</a>
88
<a href="../support.html">Support</a>
91
gMsg = "Search SQLite Docs..."
92
function entersearch() {
93
var q = document.getElementById("q");
94
if( q.value == gMsg ) { q.value = "" }
95
q.style.color = "black"
96
q.style.fontStyle = "normal"
98
function leavesearch() {
99
var q = document.getElementById("q");
100
if( q.value == "" ) {
102
q.style.color = "#044a64"
103
q.style.fontStyle = "italic"
108
<div style="padding:0 1em 0px 0;white-space:nowrap">
109
<form name=f method="GET" action="http://www.sqlite.org/search">
110
<input id=q name=q type=text
111
onfocus="entersearch()" onblur="leavesearch()" style="width:24ex;padding:1px 1ex; border:solid white 1px; font-size:0.9em ; font-style:italic;color:#044a64;" value="Search SQLite Docs...">
112
<input type=submit value="Go" style="border:solid white 1px;background-color:#044a64;color:white;font-size:0.9em;padding:0 1ex">
116
</div></div></div></div>
118
<div class=startsearch></div>
120
<a href="intro.html"><h2>SQLite C Interface</h2></a><h2>Initialize The SQLite Library</h2><blockquote><pre>int sqlite3_initialize(void);
121
int sqlite3_shutdown(void);
122
int sqlite3_os_init(void);
123
int sqlite3_os_end(void);
124
</pre></blockquote><p>
125
The sqlite3_initialize() routine initializes the
126
SQLite library. The sqlite3_shutdown() routine
127
deallocates any resources that were allocated by sqlite3_initialize().
128
These routines are designed to aid in process initialization and
129
shutdown on embedded systems. Workstation applications using
130
SQLite normally do not need to invoke either of these routines.</p>
132
<p>A call to sqlite3_initialize() is an "effective" call if it is
133
the first time sqlite3_initialize() is invoked during the lifetime of
134
the process, or if it is the first time sqlite3_initialize() is invoked
135
following a call to sqlite3_shutdown(). Only an effective call
136
of sqlite3_initialize() does any initialization. All other calls
137
are harmless no-ops.</p>
139
<p>A call to sqlite3_shutdown() is an "effective" call if it is the first
140
call to sqlite3_shutdown() since the last sqlite3_initialize(). Only
141
an effective call to sqlite3_shutdown() does any deinitialization.
142
All other valid calls to sqlite3_shutdown() are harmless no-ops.</p>
144
<p>The sqlite3_initialize() interface is threadsafe, but sqlite3_shutdown()
145
is not. The sqlite3_shutdown() interface must only be called from a
146
single thread. All open <a href="../c3ref/sqlite3.html">database connections</a> must be closed and all
147
other SQLite resources must be deallocated prior to invoking
148
sqlite3_shutdown().</p>
150
<p>Among other things, sqlite3_initialize() will invoke
151
sqlite3_os_init(). Similarly, sqlite3_shutdown()
152
will invoke sqlite3_os_end().</p>
154
<p>The sqlite3_initialize() routine returns <a href="../c3ref/c_abort.html">SQLITE_OK</a> on success.
155
If for some reason, sqlite3_initialize() is unable to initialize
156
the library (perhaps it is unable to allocate a needed resource such
157
as a mutex) it returns an <a href="../c3ref/c_abort.html">error code</a> other than <a href="../c3ref/c_abort.html">SQLITE_OK</a>.</p>
159
<p>The sqlite3_initialize() routine is called internally by many other
160
SQLite interfaces so that an application usually does not need to
161
invoke sqlite3_initialize() directly. For example, <a href="../c3ref/open.html">sqlite3_open()</a>
162
calls sqlite3_initialize() so the SQLite library will be automatically
163
initialized when <a href="../c3ref/open.html">sqlite3_open()</a> is called if it has not be initialized
164
already. However, if SQLite is compiled with the <a href="../compile.html#omit_autoinit">SQLITE_OMIT_AUTOINIT</a>
165
compile-time option, then the automatic calls to sqlite3_initialize()
166
are omitted and the application must call sqlite3_initialize() directly
167
prior to using any other SQLite interface. For maximum portability,
168
it is recommended that applications always invoke sqlite3_initialize()
169
directly prior to using any other SQLite interface. Future releases
170
of SQLite may require this. In other words, the behavior exhibited
171
when SQLite is compiled with <a href="../compile.html#omit_autoinit">SQLITE_OMIT_AUTOINIT</a> might become the
172
default behavior in some future release of SQLite.</p>
174
<p>The sqlite3_os_init() routine does operating-system specific
175
initialization of the SQLite library. The sqlite3_os_end()
176
routine undoes the effect of sqlite3_os_init(). Typical tasks
177
performed by these routines include allocation or deallocation
178
of static resources, initialization of global variables,
179
setting up a default <a href="../c3ref/vfs.html">sqlite3_vfs</a> module, or setting up
180
a default configuration using <a href="../c3ref/config.html">sqlite3_config()</a>.</p>
182
<p>The application should never invoke either sqlite3_os_init()
183
or sqlite3_os_end() directly. The application should only invoke
184
sqlite3_initialize() and sqlite3_shutdown(). The sqlite3_os_init()
185
interface is called automatically by sqlite3_initialize() and
186
sqlite3_os_end() is called by sqlite3_shutdown(). Appropriate
187
implementations for sqlite3_os_init() and sqlite3_os_end()
188
are built into SQLite when it is compiled for Unix, Windows, or OS/2.
189
When <a href="../custombuild.html">built for other platforms</a>
190
(using the <a href="../compile.html#os_other">SQLITE_OS_OTHER=1</a> compile-time
191
option) the application must supply a suitable implementation for
192
sqlite3_os_init() and sqlite3_os_end(). An application-supplied
193
implementation of sqlite3_os_init() or sqlite3_os_end()
194
must return <a href="../c3ref/c_abort.html">SQLITE_OK</a> on success and some other <a href="../c3ref/c_abort.html">error code</a> upon
196
</p><p>See also lists of
197
<a href="objlist.html">Objects</a>,
198
<a href="constlist.html">Constants</a>, and
199
<a href="funclist.html">Functions</a>.</p>