summaryrefslogtreecommitdiffstats
path: root/www/c3ref/open.html
diff options
context:
space:
mode:
Diffstat (limited to 'www/c3ref/open.html')
-rw-r--r--www/c3ref/open.html422
1 files changed, 422 insertions, 0 deletions
diff --git a/www/c3ref/open.html b/www/c3ref/open.html
new file mode 100644
index 0000000..c9319ac
--- /dev/null
+++ b/www/c3ref/open.html
@@ -0,0 +1,422 @@
+<!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>Opening A New Database Connection</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;
+}
+var antiRobot = 0;
+function antiRobotGo(){
+if( antiRobot!=3 ) return;
+antiRobot = 7;
+var j = document.getElementById("mtimelink");
+if(j && j.hasAttribute("data-href")) j.href=j.getAttribute("data-href");
+}
+function antiRobotDefense(){
+document.body.onmousedown=function(){
+antiRobot |= 2;
+antiRobotGo();
+document.body.onmousedown=null;
+}
+document.body.onmousemove=function(){
+antiRobot |= 2;
+antiRobotGo();
+document.body.onmousemove=null;
+}
+setTimeout(function(){
+antiRobot |= 1;
+antiRobotGo();
+}, 100)
+antiRobotGo();
+}
+antiRobotDefense();
+</script>
+<!-- keywords: sqlite3_open sqlite3_open16 sqlite3_open_v2 -->
+<div class=nosearch>
+<a href="../c3ref/intro.html"><h2>SQLite C Interface</h2></a>
+<h2>Opening A New Database Connection</h2>
+</div>
+<blockquote><pre>
+int sqlite3_open(
+ const char *filename, /* Database filename (UTF-8) */
+ sqlite3 **ppDb /* OUT: SQLite db handle */
+);
+int sqlite3_open16(
+ const void *filename, /* Database filename (UTF-16) */
+ sqlite3 **ppDb /* OUT: SQLite db handle */
+);
+int sqlite3_open_v2(
+ const char *filename, /* Database filename (UTF-8) */
+ sqlite3 **ppDb, /* OUT: SQLite db handle */
+ int flags, /* Flags */
+ const char *zVfs /* Name of VFS module to use */
+);
+</pre></blockquote>
+<p>
+These routines open an SQLite database file as specified by the
+filename argument. The filename argument is interpreted as UTF-8 for
+sqlite3_open() and sqlite3_open_v2() and as UTF-16 in the native byte
+order for sqlite3_open16(). A <a href="../c3ref/sqlite3.html">database connection</a> handle is usually
+returned in *ppDb, even if an error occurs. The only exception is that
+if SQLite is unable to allocate memory to hold the <a href="../c3ref/sqlite3.html">sqlite3</a> object,
+a NULL will be written into *ppDb instead of a pointer to the <a href="../c3ref/sqlite3.html">sqlite3</a>
+object. If the database is opened (and/or created) successfully, then
+<a href="../rescode.html#ok">SQLITE_OK</a> is returned. Otherwise an <a href="../rescode.html">error code</a> is returned. The
+<a href="../c3ref/errcode.html">sqlite3_errmsg()</a> or <a href="../c3ref/errcode.html">sqlite3_errmsg16()</a> routines can be used to obtain
+an English language description of the error following a failure of any
+of the sqlite3_open() routines.</p>
+
+<p>The default encoding will be UTF-8 for databases created using
+sqlite3_open() or sqlite3_open_v2(). The default encoding for databases
+created using sqlite3_open16() will be UTF-16 in the native byte order.</p>
+
+<p>Whether or not an error occurs when it is opened, resources
+associated with the <a href="../c3ref/sqlite3.html">database connection</a> handle should be released by
+passing it to <a href="../c3ref/close.html">sqlite3_close()</a> when it is no longer required.</p>
+
+<p>The sqlite3_open_v2() interface works like sqlite3_open()
+except that it accepts two additional parameters for additional control
+over the new database connection. The flags parameter to
+sqlite3_open_v2() must include, at a minimum, one of the following
+three flag combinations:</p>
+
+<p><dl>
+<dt><a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_READONLY</a></dt>
+<dd>The database is opened in read-only mode. If the database does
+not already exist, an error is returned.</dd></p>
+
+<p><dt><a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_READWRITE</a></dt>
+<dd>The database is opened for reading and writing if possible, or
+reading only if the file is write protected by the operating
+system. In either case the database must already exist, otherwise
+an error is returned. For historical reasons, if opening in
+read-write mode fails due to OS-level permissions, an attempt is
+made to open it in read-only mode. <a href="../c3ref/db_readonly.html">sqlite3_db_readonly()</a> can be
+used to determine whether the database is actually
+read-write.</dd></p>
+
+<p><dt><a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_READWRITE</a> | <a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_CREATE</a></dt>
+<dd>The database is opened for reading and writing, and is created if
+it does not already exist. This is the behavior that is always used for
+sqlite3_open() and sqlite3_open16().</dd>
+</dl></p>
+
+<p>In addition to the required flags, the following optional flags are
+also supported:</p>
+
+<p><dl>
+<dt><a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_URI</a></dt>
+<dd>The filename can be interpreted as a URI if this flag is set.</dd></p>
+
+<p><dt><a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_MEMORY</a></dt>
+<dd>The database will be opened as an in-memory database. The database
+is named by the "filename" argument for the purposes of cache-sharing,
+if shared cache mode is enabled, but the "filename" is otherwise ignored.
+</dd></p>
+
+<p><dt><a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_NOMUTEX</a></dt>
+<dd>The new database connection will use the "multi-thread"
+<a href="../threadsafe.html">threading mode</a>. This means that separate threads are allowed
+to use SQLite at the same time, as long as each thread is using
+a different <a href="../c3ref/sqlite3.html">database connection</a>.</p>
+
+<p><dt><a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_FULLMUTEX</a></dt>
+<dd>The new database connection will use the "serialized"
+<a href="../threadsafe.html">threading mode</a>. This means the multiple threads can safely
+attempt to use the same database connection at the same time.
+(Mutexes will block any actual concurrency, but in this mode
+there is no harm in trying.)</p>
+
+<p><dt><a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_SHAREDCACHE</a></dt>
+<dd>The database is opened <a href="../sharedcache.html">shared cache</a> enabled, overriding
+the default shared cache setting provided by
+<a href="../c3ref/enable_shared_cache.html">sqlite3_enable_shared_cache()</a>.
+The <a href="../sharedcache.html#dontuse">use of shared cache mode is discouraged</a> and hence shared cache
+capabilities may be omitted from many builds of SQLite. In such cases,
+this option is a no-op.</p>
+
+<p><dt><a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_PRIVATECACHE</a></dt>
+<dd>The database is opened <a href="../sharedcache.html">shared cache</a> disabled, overriding
+the default shared cache setting provided by
+<a href="../c3ref/enable_shared_cache.html">sqlite3_enable_shared_cache()</a>.</p>
+
+<p><a name="openexrescode"></a>
+ <dt><a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_EXRESCODE</a></dt>
+<dd>The database connection comes up in "extended result code mode".
+In other words, the database behaves has if
+<a href="../c3ref/extended_result_codes.html">sqlite3_extended_result_codes(db,1)</a> where called on the database
+connection as soon as the connection is created. In addition to setting
+the extended result code mode, this flag also causes <a href="../c3ref/open.html">sqlite3_open_v2()</a>
+to return an extended result code.</dd></p>
+
+<p><a name="opennofollow"></a>
+ <dt><a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_NOFOLLOW</a></dt>
+<dd>The database filename is not allowed to contain a symbolic link</dd>
+</dl></p>
+
+<p>If the 3rd parameter to sqlite3_open_v2() is not one of the
+required combinations shown above optionally combined with other
+<a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_* bits</a>
+then the behavior is undefined. Historic versions of SQLite
+have silently ignored surplus bits in the flags parameter to
+sqlite3_open_v2(), however that behavior might not be carried through
+into future versions of SQLite and so applications should not rely
+upon it. Note in particular that the SQLITE_OPEN_EXCLUSIVE flag is a no-op
+for sqlite3_open_v2(). The SQLITE_OPEN_EXCLUSIVE does *not* cause
+the open to fail if the database already exists. The SQLITE_OPEN_EXCLUSIVE
+flag is intended for use by the <a href="../c3ref/vfs.html">VFS interface</a> only, and not
+by sqlite3_open_v2().</p>
+
+<p>The fourth parameter to sqlite3_open_v2() is the name of the
+<a href="../c3ref/vfs.html">sqlite3_vfs</a> object that defines the operating system interface that
+the new database connection should use. If the fourth parameter is
+a NULL pointer then the default <a href="../c3ref/vfs.html">sqlite3_vfs</a> object is used.</p>
+
+<p>If the filename is ":memory:", then a private, temporary in-memory database
+is created for the connection. This in-memory database will vanish when
+the database connection is closed. Future versions of SQLite might
+make use of additional special filenames that begin with the ":" character.
+It is recommended that when a database filename actually does begin with
+a ":" character you should prefix the filename with a pathname such as
+"./" to avoid ambiguity.</p>
+
+<p>If the filename is an empty string, then a private, temporary
+on-disk database will be created. This private database will be
+automatically deleted as soon as the database connection is closed.</p>
+
+<p><a name="urifilenamesinsqlite3open"></a>
+ <h3>URI Filenames</h3></p>
+
+<p>If <a href="../uri.html">URI filename</a> interpretation is enabled, and the filename argument
+begins with "file:", then the filename is interpreted as a URI. URI
+filename interpretation is enabled if the <a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_URI</a> flag is
+set in the third argument to sqlite3_open_v2(), or if it has
+been enabled globally using the <a href="../c3ref/c_config_covering_index_scan.html#sqliteconfiguri">SQLITE_CONFIG_URI</a> option with the
+<a href="../c3ref/config.html">sqlite3_config()</a> method or by the <a href="../compile.html#use_uri">SQLITE_USE_URI</a> compile-time option.
+URI filename interpretation is turned off
+by default, but future releases of SQLite might enable URI filename
+interpretation by default. See "<a href="../uri.html">URI filenames</a>" for additional
+information.</p>
+
+<p>URI filenames are parsed according to RFC 3986. If the URI contains an
+authority, then it must be either an empty string or the string
+"localhost". If the authority is not an empty string or "localhost", an
+error is returned to the caller. The fragment component of a URI, if
+present, is ignored.</p>
+
+<p>SQLite uses the path component of the URI as the name of the disk file
+which contains the database. If the path begins with a '/' character,
+then it is interpreted as an absolute path. If the path does not begin
+with a '/' (meaning that the authority section is omitted from the URI)
+then the path is interpreted as a relative path.
+On windows, the first component of an absolute path
+is a drive specification (e.g. "C:").</p>
+
+<p><a name="coreuriqueryparameters"></a>
+
+The query component of a URI may contain parameters that are interpreted
+either by SQLite itself, or by a <a href="../vfs.html">custom VFS implementation</a>.
+SQLite and its built-in <a href="../vfs.html">VFSes</a> interpret the
+following query parameters:</p>
+
+<p><ul>
+<li> <b>vfs</b>: The "vfs" parameter may be used to specify the name of
+a VFS object that provides the operating system interface that should
+be used to access the database file on disk. If this option is set to
+an empty string the default VFS object is used. Specifying an unknown
+VFS is an error. If sqlite3_open_v2() is used and the vfs option is
+present, then the VFS specified by the option takes precedence over
+the value passed as the fourth parameter to sqlite3_open_v2().</p>
+
+<p><li> <b>mode</b>: The mode parameter may be set to either "ro", "rw",
+"rwc", or "memory". Attempting to set it to any other value is
+an error.
+If "ro" is specified, then the database is opened for read-only
+access, just as if the <a href="../c3ref/c_open_autoproxy.html">SQLITE_OPEN_READONLY</a> flag had been set in the
+third argument to sqlite3_open_v2(). If the mode option is set to
+"rw", then the database is opened for read-write (but not create)
+access, as if SQLITE_OPEN_READWRITE (but not SQLITE_OPEN_CREATE) had
+been set. Value "rwc" is equivalent to setting both
+SQLITE_OPEN_READWRITE and SQLITE_OPEN_CREATE. If the mode option is
+set to "memory" then a pure <a href="../inmemorydb.html">in-memory database</a> that never reads
+or writes from disk is used. It is an error to specify a value for
+the mode parameter that is less restrictive than that specified by
+the flags passed in the third parameter to sqlite3_open_v2().</p>
+
+<p><li> <b>cache</b>: The cache parameter may be set to either "shared" or
+"private". Setting it to "shared" is equivalent to setting the
+SQLITE_OPEN_SHAREDCACHE bit in the flags argument passed to
+sqlite3_open_v2(). Setting the cache parameter to "private" is
+equivalent to setting the SQLITE_OPEN_PRIVATECACHE bit.
+If sqlite3_open_v2() is used and the "cache" parameter is present in
+a URI filename, its value overrides any behavior requested by setting
+SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag.</p>
+
+<p><li> <b>psow</b>: The psow parameter indicates whether or not the
+<a href="../psow.html">powersafe overwrite</a> property does or does not apply to the
+storage media on which the database file resides.</p>
+
+<p><li> <b>nolock</b>: The nolock parameter is a boolean query parameter
+which if set disables file locking in rollback journal modes. This
+is useful for accessing a database on a filesystem that does not
+support locking. Caution: Database corruption might result if two
+or more processes write to the same database and any one of those
+processes uses nolock=1.</p>
+
+<p><li> <b>immutable</b>: The immutable parameter is a boolean query
+parameter that indicates that the database file is stored on
+read-only media. When immutable is set, SQLite assumes that the
+database file cannot be changed, even by a process with higher
+privilege, and so the database is opened read-only and all locking
+and change detection is disabled. Caution: Setting the immutable
+property on a database file that does in fact change can result
+in incorrect query results and/or <a href="../rescode.html#corrupt">SQLITE_CORRUPT</a> errors.
+See also: <a href="../c3ref/c_iocap_atomic.html">SQLITE_IOCAP_IMMUTABLE</a>.</p>
+
+<p></ul></p>
+
+<p>Specifying an unknown parameter in the query component of a URI is not an
+error. Future versions of SQLite might understand additional query
+parameters. See "<a href="../uri.html#coreqp">query parameters with special meaning to SQLite</a>" for
+additional information.</p>
+
+<p><a name="urifilenameexamples"></a>
+ <h3>URI filename examples</h3></p>
+
+<p><table border="1" align=center cellpadding=5>
+<tr><th> URI filenames <th> Results
+<tr><td> file:data.db <td>
+Open the file "data.db" in the current directory.
+<tr><td> file:/home/fred/data.db<br>
+file:///home/fred/data.db <br>
+file://localhost/home/fred/data.db <br> <td>
+Open the database file "/home/fred/data.db".
+<tr><td> file://darkstar/home/fred/data.db <td>
+An error. "darkstar" is not a recognized authority.
+<tr><td style="white-space:nowrap">
+file:///C:/Documents%20and%20Settings/fred/Desktop/data.db
+<td> Windows only: Open the file "data.db" on fred's desktop on drive
+C:. Note that the %20 escaping in this example is not strictly
+necessary - space characters can be used literally
+in URI filenames.
+<tr><td> file:data.db?mode=ro&cache=private <td>
+Open file "data.db" in the current directory for read-only access.
+Regardless of whether or not shared-cache mode is enabled by
+default, use a private cache.
+<tr><td> file:/home/fred/data.db?vfs=unix-dotfile <td>
+Open file "/home/fred/data.db". Use the special VFS "unix-dotfile"
+that uses dot-files in place of posix advisory locking.
+<tr><td> file:data.db?mode=readonly <td>
+An error. "readonly" is not a valid option for the "mode" parameter.
+Use "ro" instead: "file:data.db?mode=ro".
+</table></p>
+
+<p>URI hexadecimal escape sequences (%HH) are supported within the path and
+query components of a URI. A hexadecimal escape sequence consists of a
+percent sign - "%" - followed by exactly two hexadecimal digits
+specifying an octet value. Before the path or query components of a
+URI filename are interpreted, they are encoded using UTF-8 and all
+hexadecimal escape sequences replaced by a single byte containing the
+corresponding octet. If this process generates an invalid UTF-8 encoding,
+the results are undefined.</p>
+
+<p><b>Note to Windows users:</b> The encoding used for the filename argument
+of sqlite3_open() and sqlite3_open_v2() must be UTF-8, not whatever
+codepage is currently defined. Filenames containing international
+characters must be converted to UTF-8 prior to passing them into
+sqlite3_open() or sqlite3_open_v2().</p>
+
+<p><b>Note to Windows Runtime users:</b> The temporary directory must be set
+prior to calling sqlite3_open() or sqlite3_open_v2(). Otherwise, various
+features that require the use of temporary files may fail.</p>
+
+<p>See also: <a href="../c3ref/temp_directory.html">sqlite3_temp_directory</a>
+</p><p>See also lists of
+ <a href="../c3ref/objlist.html">Objects</a>,
+ <a href="../c3ref/constlist.html">Constants</a>, and
+ <a href="../c3ref/funclist.html">Functions</a>.</p>
+