:-) (CVS 3)

FossilOrigin-Name: 9e36a6014b9e8298d8fff71f0f1e3fd5610c30bd
This commit is contained in:
drh 2000-05-29 18:20:15 +00:00
parent 305cea69d5
commit dd1dcd511b
5 changed files with 179 additions and 25 deletions

View File

@ -1,5 +1,5 @@
C :-)\s(CVS\s2)
D 2000-05-29T17:44:25
C :-)\s(CVS\s3)
D 2000-05-29T18:20:15
F Makefile.in bab6ff58d847d1b9eb25d4cbf671e4ebd0c74256
F configure 8faba4d0194321e5f61a64e842c65eab0f68e6d8 x
F configure.in 4fc2947d631037bd340b112d6193847d7ac827ae
@ -23,9 +23,10 @@ F tool/lempar.c a1eec94d6eacc12332368660ec65f3b248853833
F tool/opNames.awk 2bd9071a138e4e2be13dc98fe066398a61219e1e
F tool/opcodeDoc.awk b3a2a3d5d3075b8bd90b7afe24283efdd586659c
F tool/renumberOps.awk 6d067177ad5f8d711b79577b462da9b3634bd0a9
F www/index.tcl 3785d894fe5fc0976bb7400ab307b4aef34fbf60
F www/sqlite.tcl c24416391358ade2e74fffeaca8eb0b0e8b1d1ac
P 6f3655f79f9b6fc9fb7baaa10a7e0f2b6a512dfa
R 6b1f63772187c94801897db097691461
F www/c_interface.tcl 851921790368665e040d15eb33a3ca569de97643
F www/index.tcl c10c625192ee9f19f186f65b90196c9cabe30936
F www/sqlite.tcl 69674d9b8344870de7a6f059169311ebc54111f8
P 53841c66c699665e83c933627bbe7a193cfccb6b
R 43b99c48908500b05b2ba1dbbc4bcfec
U drh
Z 084e3a79b4f63a91b5e2b285235fe69b
Z 1a9f5aa38de8d4363998964e8afa6610

View File

@ -1 +1 @@
53841c66c699665e83c933627bbe7a193cfccb6b
9e36a6014b9e8298d8fff71f0f1e3fd5610c30bd

139
www/c_interface.tcl Normal file
View File

@ -0,0 +1,139 @@
#
# Run this Tcl script to generate the sqlite.html file.
#
set rcsid {$Id: c_interface.tcl,v 1.1 2000/05/29 18:20:15 drh Exp $}
puts {<html>
<head>
<title>The C language interface to the SQLite library</title>
</head>
<body bgcolor=white>
<h1 align=center>
The C language interface to the SQLite library
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] GMT)
</p>"
puts {
<p>The SQLite library is designed to be very easy to use from
a C or C++ program. This document gives an overview of the C/C++
programming interface.</p>
<p>The interface to the SQLite library consists of 4 functions
and one opaque data structure.</p>
<blockquote><pre>
typedef struct sqlite sqlite;
sqlite *sqlite_open(const char *filename, int mode, char **errmsg);
void sqlite_close(sqlite*);
int sqlite_exec(
sqlite*,
char *sql,
int (*)(void*,int,char**,char**),
void*,
char **errmsg
);
int sqlite_complete(const char *sql);
</pre></blockquote>
<p>All of the above definitions are included in the "sqlite.h"
header file that comes in the source tree.</p>
<h2>Opening a database</h2>
<p>Use the <b>sqlite_open</b> function to open an existing SQLite
database or to create a new SQLite database. The first argument
is the database name. The second argument is a constant 0666 to
open the database for reading and writing and 0444 to open the
database read only. The third argument is a pointer to a string
pointer. If the third argument is not NULL and an error occurs
while trying to open the database, then an error message will be
written to memory obtained from malloc() and *errmsg will be made
to point to this error message. The calling function is responsible
for freeing the memory when it has finished with it.</p>
<p>An SQLite database is just a directory containing a collection of
GDBM files. There is one GDBM file for each table and index in the
database. All GDBM files end with the ".tbl" suffix. Every SQLite
database also contains a special database table named <b>sqlite_master</b>
stored in its own GDBM file. This special table records the database
schema.</p>
<p>To create a new SQLite database, all you have to do is call
<b>sqlite_open()</b> with the first parameter set to the name of
an empty directory and the second parameter set to 0666.</p>
<p>The return value of the <b>sqlite_open()</b> function is a
pointer to an opaque <b>sqlite</b> structure. This pointer will
be the first argument to all subsequent SQLite function calls that
deal with the same database.</p>
<h2>Closing the database</h2>
<p>To close an SQLite database, just call the <b>sqlite_close()</b>
function passing it the sqlite structure pointer that was obtained
from a prior call to <b>sqlite_open</b>.
<h2>Executing SQL statements</h2>
<p>The <b>sqlite_exec()</b> function is used to process SQL statements
and queries. This function requires 5 parameters as follows:</p>
<ol>
<li><p>A pointer to the sqlite structure obtained from a prior call
to <b>sqlite_open()</b>.</p></li>
<li><p>A null-terminated string containing the text of the SQL statements
and/or queries to be processed.</p></li>
<li><p>A pointer to a callback function which is invoked once for each
row in the result of a query. This argument may be NULL, in which
case no callbacks will ever be invoked.</p></li>
<li><p>A pointer to anything that is forward to become the first argument
to the callback function.</p></li>
<li><p>A pointer to a string pointer into which error messages are written.
This argument may be NULL, in which case error messages are not
reported back to the calling function.</p></li>
</ol>
<p>
The callback function is used to receive the results of a query. A
prototype for the callback function is as follows:</p>
<blockquote><pre>
int Callback(void *pArg, int argc, char **argv, char **columnNames){
return 0;
}
</pre></blockquote>
<p>The first argument to the callback is just a copy of the fourth argument
to <b>sqlite_exec()</b> This parameter can be used to pass arbitrary
information through to the callback function from client code.
The second argument is the number columns in the query result.
The third argument is an array of pointers to string where each string
is a single column of the result for that record. The names of the
columns are contained in the fourth argument.</p>
<p>The callback function should normally return 0. If the callback
function returns non-zero, the query is immediately aborted and the
return value of the callback is returned from <b>sqlite_exec()</b>.
<h2>Testing for a complete SQL statement</h2>
<p>The last interface routine to SQLite is a convenience function used
to test whether or not a string forms a complete SQL statement.
If the <b>sqlite_complete</b> function returns true when its input
is a string, then the argument forms a complete SQL statement.
There are no guarantees that the syntax of that statement is correct,
but we at least know the statement is complete. If <b>sqlite_complete</b>
returns false, then more text is required to complete the SQL statement.</p>
<p>For the purpose of the <b>sqlite_complete()</b> function, an SQL
statement is complete if it ends in a semicolon.</p>
puts {
<p><hr /></p>
<p><a href="index.html"><img src="/goback.jpg" border=0 />
Back to the SQLite Home Page</a>
</p>
</body></html>}

View File

@ -1,15 +1,14 @@
#
# Run this TCL script to generate HTML for the index.html file.
#
set rcsid {$Id: index.tcl,v 1.1 2000/05/29 17:44:25 drh Exp $}
set rcsid {$Id: index.tcl,v 1.2 2000/05/29 18:20:15 drh Exp $}
puts {<html>
<head><title>SQLite: An SQL Frontend For GDBM</title></head>
<body bgcolor=white>
<h1 align=center>SQLite: An SQL Frontend For GDBM</h1>
<p align=center>}
puts "Version 0.1 (alpha)<br />"
puts "Last modified [lrange $rcsid 3 4]"
puts "Last modified [lrange $rcsid 3 4] GMT"
puts {</p>}
puts {<h2>Introduction</h2>
@ -20,15 +19,19 @@ to use an SQL database but which do not have access to a full-blown
SQL RDBMS.</p>
<p>The C interface to SQLite is very simple, consisting of only
four functions and a single opaque data structure. A Tcl interface
four functions and a single opaque data structure.
See <a href="c_interface.html">c_interface.html</a> for details.
A Tcl interface
to SQLite is also available and is included in the source tree.
Documentation on the Tcl interface is pending.
Interfaces for perl and python may be supplied in future releases.</p>
<p>There is a standalone C program named "sqlite" that can be used
to interactively create, update and/or query an SQLite database.
The sources to the sqlite program are part of the source tree and
can be used as an example of how to interact with the SQLite C
library.</p>
library. For more information on the sqlite program,
see <a href="sqlite.html">sqlite.html</a>.</p>
<p>SQLite does not try to implement every feature of SQL. But it
does strive to implement to most commonly used features. SQLite
@ -47,14 +50,16 @@ currently understands the following SQL commands:</p>
</ul>
</p>
<p>SQLite does not (at present) implement any of these features:</p>
<p>Some the many SQL features that SQLite does not (currently)
implement are as follows:</p>
<p>
<ul>
<li>ALTER TABLE</li>
<li>The GROUP BY or HAVING clauses of a SELECT</li>
<li>The LIKE or IN operators of expressions</li>
<li>The LIKE or IN</li>
<li>Constraints</li>
<li>Nested queries</li>
<li>Transactions or rollback</li>
</ul>
</p>
@ -88,16 +93,23 @@ Click to subscribe to sqlite</a>
puts {<h2>Download</h2>
<p>You can download a tarball containing complete SQLite source
code at <a href="sqlite.tar.gz">sqlite.tar.gz</a>.}
<p>You can download a tarball containing all C source
code for SQLite at <a href="sqlite.tar.gz">sqlite.tar.gz</a>.}
puts "This is a [file size sqlite.tar.gz] byte download. The
tarball was last modified at [clock format [file mtime sqlite.tar.gz]]"
puts {</p>}
puts {</p>
<p>You can also download a larger tarball that contains everything
in the source tarball plus all of the sources for the text that
appears on this website, and other miscellaneous files. The
complete tarball is found at <a href="all.tar.gz">all.tar.gz</a>.}
puts "This is a [file size all.tar.gz] byte download and was
was last modified at [clock format [file mtime sqlite.tar.gz]]</p>"
puts {<h2>Related Sites</h2>
<ul>
<li><p>The cannonical site for GDBM is
<li><p>The canonical site for GDBM is
<a href="http://www.gnu.org/software/gdbm/gdbm.html">
http://www.gnu.org/software/gdbm/gdbm.html</a></p></li>

View File

@ -1,7 +1,7 @@
#
# Run this Tcl script to generate the sqlite.html file.
#
set rcsid {$Id: sqlite.tcl,v 1.1 2000/05/29 17:44:26 drh Exp $}
set rcsid {$Id: sqlite.tcl,v 1.2 2000/05/29 18:20:15 drh Exp $}
puts {<html>
<head>
@ -9,9 +9,11 @@ puts {<html>
</head>
<body bgcolor=white>
<h1 align=center>
<tt>sqlite</tt>: A program to administer SQLite databases
sqlite: A program to administer SQLite databases
</h1>}
puts "<p align=center>(This page was last modified on [lrange $rcsid 3 4])</p>"
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] GMT)
</p>"
puts {
<p>The SQLite library includes a simple command-line utility named
@ -200,7 +202,7 @@ sql>
puts {
<p>By default, each column is 10 characters wide.
Data that is too wide to fit in a column is trucated. You can
Data that is too wide to fit in a column is truncated. You can
adjust the column widths using the ".width" command. Like this:</p>}
Code {
@ -237,7 +239,7 @@ puts {
<p>The third output mode supported by sqlite is called "list". In
list mode, each record of a query result is written on one line of
output and each field within that record is separated by a specific
separator string. The default separator is a pipe symbolc ("|").
separator string. The default separator is a pipe symbol ("|").
List mode is especially useful when you are going to send the output
of a query to another program (such as AWK) for additional process.</p>}
@ -359,7 +361,7 @@ to "column" and to set the column widths to values that are reasonable
for looking at the output of an EXPLAIN command. The EXPLAIN command
is an SQLite-specific command that is useful for debugging. If any
regular SQL is prefaced by EXPLAIN, then the SQL command is parsed and
analyized but is not executed. Instead, the sequence of virtual machine
analyzed but is not executed. Instead, the sequence of virtual machine
instructions that would have been used to execute the SQL command are
returned like a query result. For example:</p>}