xref: /netbsd-src/share/man/man3lua/sqlite.3lua (revision 465d58a2d829587a86081ee487114f30b2f95af7)
1*465d58a2Swiz.\"	$NetBSD: sqlite.3lua,v 1.4 2014/01/06 09:30:26 wiz Exp $
212cb1007Smbalmer.\"
312cb1007Smbalmer.\" Copyright (c) 2013 Marc Balmer <mbalmer@NetBSD.org>. All rights reserved.
412cb1007Smbalmer.\"
512cb1007Smbalmer.\" Redistribution and use in source and binary forms, with or without
612cb1007Smbalmer.\" modification, are permitted provided that the following conditions
712cb1007Smbalmer.\" are met:
812cb1007Smbalmer.\" 1. Redistributions of source code must retain the above copyright
912cb1007Smbalmer.\"    notice, this list of conditions and the following disclaimer.
1012cb1007Smbalmer.\" 2. Redistributions in binary form must reproduce the above copyright
1112cb1007Smbalmer.\"    notice, this list of conditions and the following disclaimer in the
1212cb1007Smbalmer.\"    documentation and/or other materials provided with the distribution.
1312cb1007Smbalmer.\" 3. Neither the name of the University nor the names of its contributors
1412cb1007Smbalmer.\"    may be used to endorse or promote products derived from this software
1512cb1007Smbalmer.\"    without specific prior written permission.
1612cb1007Smbalmer.\"
1712cb1007Smbalmer.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
1812cb1007Smbalmer.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1912cb1007Smbalmer.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2012cb1007Smbalmer.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2112cb1007Smbalmer.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2212cb1007Smbalmer.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2312cb1007Smbalmer.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2412cb1007Smbalmer.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2512cb1007Smbalmer.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2612cb1007Smbalmer.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2712cb1007Smbalmer.\" SUCH DAMAGE.
2812cb1007Smbalmer.\"
2912cb1007Smbalmer.\"
3012cb1007Smbalmer.Dd October 28, 2013
3112cb1007Smbalmer.Dt SQLITE 3lua
3212cb1007Smbalmer.Os
3312cb1007Smbalmer.Sh NAME
3412cb1007Smbalmer.Nm sqlite
3512cb1007Smbalmer.Nd access
3612cb1007SmbalmerSQLite3 files from Lua
3712cb1007Smbalmer.Sh SYNOPSIS
3812cb1007Smbalmer.Cd "local sqlite = require 'sqlite'"
3912cb1007Smbalmer.Pp
4012cb1007Smbalmer.Bl -tag -width XXXX -compact
4112cb1007Smbalmer.\"
4212cb1007Smbalmer.\" GENERAL FUNCTIONS
4312cb1007Smbalmer.\"
4412cb1007Smbalmer.It Dv err = sqlite.initialize()
4512cb1007Smbalmer.It Dv sqlite.shutdown()
4612cb1007Smbalmer.It Dv db, err = sqlite.open(file [, flags])
4712cb1007Smbalmer.It Dv version = sqlite.libversion()
4812cb1007Smbalmer.It Dv version = sqlite.libversion_number()
4912cb1007Smbalmer.It Dv id = sqlite.sourceid()
5012cb1007Smbalmer.\"
5112cb1007Smbalmer.\" DATABASE FUNCTIONS
5212cb1007Smbalmer.\"
5312cb1007Smbalmer.Pp
5412cb1007Smbalmer.It Dv err = sqlite.close(db)
5512cb1007Smbalmer.It Dv stmt, err = sqlite.prepare(db, sql)
5612cb1007Smbalmer.It Dv err = sqlite.exec(db, sql)
5712cb1007Smbalmer.It Dv err = sqlite.errcode(db)
5812cb1007Smbalmer.It Dv msg = sqlite.errmsg(db)
5912cb1007Smbalmer.It Dv res = sqlite.get_autocommit(db)
6012cb1007Smbalmer.It Dv res = sqlite.changes(db)
6112cb1007Smbalmer.\"
6212cb1007Smbalmer.\" STATEMENT FUNCTIONS
6312cb1007Smbalmer.\"
6412cb1007Smbalmer.Pp
6512cb1007Smbalmer.It Dv err = sqlite.bind(stmt, pidx, value)
6612cb1007Smbalmer.It Dv count = sqlite.bind_parameter_count(stmt)
6712cb1007Smbalmer.It Dv pidx = sqlite.bind_parameter_index(stmt, name)
6812cb1007Smbalmer.It Dv name = sqlite.bind_parameter_name(stmt, pidx)
6912cb1007Smbalmer.It Dv err = sqlite.step(stmt)
7012cb1007Smbalmer.It Dv value = sqlite.column(stmt, cidx)
7112cb1007Smbalmer.It Dv sqlite.reset(stmt)
7212cb1007Smbalmer.It Dv sqlite.clear_bindings(stmt)
7312cb1007Smbalmer.It Dv sqlite.finalize(stmt)
7412cb1007Smbalmer.It Dv name = sqlite.column_name(stmt, cidx)
7512cb1007Smbalmer.It Dv count = sqlite.column_count(stmt)
7612cb1007Smbalmer.El
7712cb1007Smbalmer.Sh DESCRIPTION
7812cb1007SmbalmerThe
7912cb1007Smbalmer.Nm
8012cb1007SmbalmerLua binding provides access to SQLite3 files.
8112cb1007Smbalmer.Sh GENERAL FUNCTIONS
8212cb1007Smbalmer.Bl -tag -width XXXX -compact
8312cb1007Smbalmer.It Dv err = sqlite.initialize()
8412cb1007SmbalmerInitialize the SQLite3 library.
8512cb1007SmbalmerWorkstation applications using SQLite normally do not need to invoke this
8612cb1007Smbalmerfunction.
8712cb1007Smbalmer.Pp
8812cb1007Smbalmer.It Dv sqlite.shutdown()
89*465d58a2SwizDeallocate any resources that were allocated by
90*465d58a2Swiz.Fn sqlite.initialize .
9112cb1007SmbalmerWorkstation applications using SQLite normally do not need to invoke this
9212cb1007Smbalmerfunction.
9312cb1007Smbalmer.Pp
9412cb1007Smbalmer.It Dv db, err = sqlite.open(file [, flags])
9512cb1007SmbalmerOpen a database, optionally passing flags.
9612cb1007SmbalmerWhen called without flags, the database will be opened for reading and
9712cb1007Smbalmerwriting and it will be created if it does not yet exist.
9812cb1007SmbalmerThe following flags are defined:
9912cb1007Smbalmer.Pp
10012cb1007Smbalmer.Bl -tag -width XXXX -compact
10112cb1007Smbalmer.It Dv sqlite.OPEN_READONLY
10212cb1007SmbalmerThe database is opened in read-only mode.
10312cb1007SmbalmerIf the database does not already exist, an error is returned.
10412cb1007Smbalmer.Pp
10512cb1007Smbalmer.It Dv sqlite.OPEN_READWRITE
10612cb1007SmbalmerThe database is opened for reading and writing if possible, or reading only if
10712cb1007Smbalmerthe file is write protected by the operating system.
10812cb1007SmbalmerIn either case the database must already exist, otherwise an error is returned.
10912cb1007Smbalmer.Pp
11012cb1007Smbalmer.It Dv sqlite.OPEN_CREATE
11112cb1007SmbalmerThe database is opened for reading and writing, and is created if it does not
11212cb1007Smbalmeralready exist.
11312cb1007Smbalmer.El
11412cb1007Smbalmer.Pp
11512cb1007Smbalmer.It Dv version = sqlite.libversion()
11612cb1007SmbalmerReturn the SQLite3 library version number as a string.
11712cb1007Smbalmer.Pp
11812cb1007Smbalmer.It Dv version = sqlite.libversion_number()
11912cb1007SmbalmerReturn the SQLite3 library version number as a number.
12012cb1007Smbalmer.Pp
12112cb1007Smbalmer.It Dv id = sqlite.sourceid()
12212eade22SnjolyReturn the SQLite3 library source id as a string.
12312eade22Snjoly.El
12412cb1007Smbalmer.Sh DATABASE FUNCTIONS
12512cb1007SmbalmerDatabase functions operate on database objects returned by
126*465d58a2Swiz.Fn sqlite.open .
12712cb1007Smbalmer.Pp
12812cb1007Smbalmer.Bl -tag -width XXXX -compact
12912cb1007Smbalmer.It Dv err = sqlite.close(db)
13012cb1007SmbalmerClose an open database.
13112cb1007SmbalmerLike with all remaining database functions, this function can also be called
13212cb1007Smbalmerusing the Lua "colon" syntactic sugar as
13312cb1007Smbalmer.Em db:close() .
13412cb1007Smbalmer.Pp
13512cb1007Smbalmer.It Dv stmt, err = sqlite.prepare(db, sql)
13612cb1007SmbalmerReturn a prepared statement.
13712cb1007Smbalmer.Pp
13812cb1007Smbalmer.It Dv err = sqlite.exec(db, sql)
13912cb1007SmbalmerDirectly execute an SQL statement.
14012cb1007SmbalmerBe careful when creating SQL on the fly (SQL injection attacks).
14112cb1007Smbalmer.Pp
14212cb1007Smbalmer.It Dv err = sqlite.errcode(db)
14312cb1007SmbalmerReturn the numeric error code.
14412cb1007Smbalmer.Pp
14512cb1007Smbalmer.It Dv msg = sqlite.errmsg(db)
14612cb1007SmbalmerReturn the error message as a string.
14712cb1007Smbalmer.Pp
14812cb1007Smbalmer.It Dv res = sqlite.get_autocommit(db)
14912cb1007SmbalmerReturn the autocommit flag.
15012cb1007Smbalmer.Pp
15112cb1007Smbalmer.It Dv res = sqlite.changes(db)
15212cb1007SmbalmerThis function returns the number of database rows that were changed or inserted
15312cb1007Smbalmeror deleted by the most recently completed SQL statement on the database.
15412cb1007Smbalmer.El
15512cb1007Smbalmer.Sh STATEMENT FUNCTIONS
15612cb1007Smbalmer.Bl -tag -width XXXX -compact
15712cb1007Smbalmer.It Dv err = sqlite.bind(stmt, pidx, value)
15812cb1007SmbalmerBind
15912cb1007Smbalmer.Ar value
16012eade22Snjolyto the parameter
16112cb1007Smbalmer.Ar pidx
16212eade22Snjolyin the prepared statement
16312cb1007Smbalmer.Ar stmt .
16412cb1007Smbalmer.Pp
16512cb1007Smbalmer.It Dv count = sqlite.bind_parameter_count(stmt)
16612eade22SnjolyReturn the number of parameters in the prepared statement
16712cb1007Smbalmer.Ar stmt .
16812cb1007Smbalmer.Pp
16912cb1007Smbalmer.It Dv pidx = sqlite.bind_parameter_index(stmt, name)
17012eade22SnjolyReturn the parameter index for
17112cb1007Smbalmer.Ar name
17212cb1007Smbalmerin the prepared statement
17312cb1007Smbalmer.Ar stmt .
17412cb1007Smbalmer.Pp
17512cb1007Smbalmer.It Dv name = sqlite.bind_parameter_name(stmt, pidx)
17612eade22SnjolyReturn the parameter name for the parameter index
17712cb1007Smbalmer.Ar pidx
17812cb1007Smbalmerin the prepared statement
17912cb1007Smbalmer.Ar stmt .
18012cb1007Smbalmer.Pp
18112cb1007Smbalmer.It Dv err = sqlite.step(stmt)
18212cb1007SmbalmerExecute prepared statement
18312cb1007Smbalmer.Ar stmt .
18412cb1007Smbalmer.Pp
18512cb1007Smbalmer.It Dv value = sqlite.column(stmt, cidx)
18612cb1007SmbalmerReturn the value at column
18712cb1007Smbalmer.Ar cidx
18812cb1007Smbalmerin the prepared statement
18912cb1007Smbalmer.Ar stmt .
19012cb1007Smbalmer.Pp
19112cb1007Smbalmer.It Dv sqlite.reset(stmt)
192*465d58a2SwizThe
193*465d58a2Swiz.Fn sqlite.reset
194*465d58a2Swizfunction is called to reset a prepared statement object back
19512cb1007Smbalmerto its initial state, ready to be re-executed.
19612cb1007Smbalmer.Pp
19712cb1007Smbalmer.It Dv sqlite.clear_bindings(stmt)
198*465d58a2SwizContrary to the intuition of many,
199*465d58a2Swiz.Fn sqlite.reset
200*465d58a2Swizdoes not reset the bindings on a prepared statement.
201*465d58a2SwizUse this routine to reset all host parameters to
202*465d58a2Swiz.Dv NULL .
20312cb1007Smbalmer.Pp
20412cb1007Smbalmer.It Dv sqlite.finalize(stmt)
205*465d58a2SwizThe
206*465d58a2Swiz.Fn sqlite.finalize
207*465d58a2Swizfunction is called to delete a prepared statement.
20812cb1007Smbalmer.Pp
20912cb1007Smbalmer.It Dv name = sqlite.column_name(stmt, cidx)
21012cb1007SmbalmerReturn the name assigned to a particular column in the result set of a SELECT
21112cb1007Smbalmerstatement.
21212cb1007Smbalmer.Pp
21312cb1007Smbalmer.It Dv count = sqlite.column_count(stmt)
21412cb1007SmbalmerReturn the number of columns in the result set returned by the prepared
21512cb1007Smbalmerstatement
21612cb1007Smbalmer.Ar stmt .
21712cb1007SmbalmerThis routine returns 0 if
21812cb1007Smbalmer.Ar stmt
21912cb1007Smbalmeris an SQL statement that does not return data (for example an UPDATE).
22012cb1007Smbalmer.El
22112eade22Snjoly.Sh ERROR CODES
22212cb1007SmbalmerMost functions return an error code, the following error codes
22312cb1007Smbalmerare defined:
22412cb1007Smbalmer.Pp
22512eade22Snjoly.Bl -tag -width XXXX -compact
22612cb1007Smbalmer.It Dv sqlite.OK
22712cb1007SmbalmerSuccessful result.
22812cb1007Smbalmer.Pp
22912cb1007Smbalmer.It Dv sqlite.ERROR
23012cb1007SmbalmerSQL error or missing database.
23112cb1007Smbalmer.Pp
23212cb1007Smbalmer.It Dv sqlite.INTERNAL
23312cb1007SmbalmerInternal logic error in SQLite.
23412cb1007Smbalmer.Pp
23512cb1007Smbalmer.It Dv sqlite.PERM
23612cb1007SmbalmerAccess permission denied.
23712cb1007Smbalmer.Pp
23812cb1007Smbalmer.It Dv sqlite.ABORT
23912cb1007SmbalmerCallback routine requested an abort.
24012cb1007Smbalmer.Pp
24112cb1007Smbalmer.It Dv sqlite.BUSY
24212cb1007SmbalmerThe database file is locked.
24312cb1007Smbalmer.Pp
24412cb1007Smbalmer.It Dv sqlite.LOCKED
24512cb1007SmbalmerA table in the database is locked.
24612cb1007Smbalmer.Pp
24712cb1007Smbalmer.It Dv sqlite.NOMEM
24812cb1007SmbalmerOut of memory.
24912cb1007Smbalmer.Pp
25012cb1007Smbalmer.It Dv sqlite.READONLY
25112cb1007SmbalmerAttempt to write a readonly database.
25212cb1007Smbalmer.Pp
25312cb1007Smbalmer.It Dv sqlite.INTERRUPT
254f5b7cc34SwizOperation terminated by
255f5b7cc34Swiz.Fn sqlite3_interrupt .
25612cb1007Smbalmer.Pp
25712cb1007Smbalmer.It Dv sqlite.IOERR
25812cb1007SmbalmerSome kind of disk I/O error occurred.
25912cb1007Smbalmer.Pp
26012cb1007Smbalmer.It Dv sqlite.CORRUPT
26112cb1007SmbalmerThe database disk image is malformed.
26212cb1007Smbalmer.Pp
26312cb1007Smbalmer.It Dv sqlite.NOTFOUND
264f5b7cc34SwizUnknown opcode in
265f5b7cc34Swiz.Fn sqlite3_file_control .
26612cb1007Smbalmer.Pp
26712cb1007Smbalmer.It Dv sqlite.FULL
26812cb1007SmbalmerInsertion failed because database is full.
26912cb1007Smbalmer.Pp
27012cb1007Smbalmer.It Dv sqlite.CANTOPEN
27112cb1007SmbalmerUnable to open the database file.
27212cb1007Smbalmer.Pp
27312cb1007Smbalmer.It Dv sqlite.PROTOCOL
27412cb1007SmbalmerDatabase lock protocol error.
27512cb1007Smbalmer.Pp
27612cb1007Smbalmer.It Dv sqlite.EMPTY
27712cb1007SmbalmerDatabase is empty.
27812cb1007Smbalmer.Pp
27912cb1007Smbalmer.It Dv sqlite.SCHEMA
28012cb1007SmbalmerThe database schema changed.
28112cb1007Smbalmer.Pp
28212cb1007Smbalmer.It Dv sqlite.TOOBIG
28312cb1007SmbalmerString or BLOB exceeds size limit.
28412cb1007Smbalmer.Pp
28512cb1007Smbalmer.It Dv sqlite.CONSTRAINT
28612cb1007SmbalmerAbort due to constraint violation.
28712cb1007Smbalmer.Pp
28812cb1007Smbalmer.It Dv sqlite.MISMATCH
28912cb1007SmbalmerData type mismatch.
29012cb1007Smbalmer.Pp
29112cb1007Smbalmer.It Dv sqlite.MISUSE
29212cb1007SmbalmerLibrary used incorrectly.
29312cb1007Smbalmer.Pp
29412cb1007Smbalmer.It Dv sqlite.NOLFS
29512cb1007SmbalmerUses OS features not supported on host.
29612cb1007Smbalmer.Pp
29712cb1007Smbalmer.It Dv sqlite.AUTH
29812cb1007SmbalmerAuthorization denied.
29912cb1007Smbalmer.Pp
30012cb1007Smbalmer.It Dv sqlite.FORMAT
30112cb1007SmbalmerAuxiliary database format error.
30212cb1007Smbalmer.Pp
30312cb1007Smbalmer.It Dv sqlite.RANGE
304*465d58a2Swiz2nd parameter to
305*465d58a2Swiz.Fn sqlite.bind
306*465d58a2Swizout of range.
30712cb1007Smbalmer.Pp
30812cb1007Smbalmer.It Dv sqlite.NOTADB
30912cb1007SmbalmerFile opened that is not a database file.
31012cb1007Smbalmer.Pp
31112cb1007Smbalmer.It Dv sqlite.ROW
312*465d58a2Swiz.Fn sqlite.step
313*465d58a2Swizhas another row ready.
31412cb1007Smbalmer.Pp
31512cb1007Smbalmer.It Dv sqlite.DONE
316*465d58a2Swiz.Fn sqlite.step
317*465d58a2Swizhas finished executing.
31812cb1007Smbalmer.El
31912cb1007Smbalmer.Sh SEE ALSO
32012cb1007Smbalmer.Xr lua 1 ,
32112cb1007Smbalmer.Xr luac 1 ,
32212cb1007Smbalmer.Xr sqlite3 1 ,
32312cb1007Smbalmer.Xr intro 3lua
32412cb1007Smbalmer.Sh HISTORY
32512cb1007SmbalmerAn
32612cb1007Smbalmer.Nm
32712cb1007Smbalmermanual appeared in
32812cb1007Smbalmer.Nx 7.0 .
32912cb1007Smbalmer.Sh AUTHORS
33012cb1007Smbalmer.An -nosplit
33112cb1007SmbalmerThe
33212cb1007Smbalmer.Nm
33312cb1007SmbalmerLua binding was written by
33412cb1007Smbalmer.An Marc Balmer Aq Mt mbalmer@NetBSD.org .
335