Addons/data/sqlite/Definitions
Overview | Basic Usage | Create | Definitions | zFns | Installation | Nulls | Examples | Quirks
Functions to open/close databases are called in the psqlite locale. Once a database is open, functions to access it are called in the database locale. Some examples assume the sandp database is open in locale db.
Call SQL commands
sqlcmd
Call SQL commands, with no result data expected, i.e. the result is the command return code. The argument is one or more semicolon-separated SQL statements.
sqlcmd__db 'update s set name="brown" where rowid=2' 0 sqlreads__db 's where rowid=2' βββββ¬ββββββ¬βββββββ¬ββββββ βsidβname βstatusβcity β βββββΌββββββΌβββββββΌββββββ€ βs2 βbrownβ10 βparisβ βββββ΄ββββββ΄βββββββ΄ββββββ
Database Definitions
sqlclose
Close database.
sqlclose__db''
sqlcopy
Copy a database (from;to) and open the copy.
db=: sqlcopy_psqlite_ '~addons/data/sqlite/db/sandp.db';'~temp/sandp.db'
sqlcreate
Create a database, overwriting any existing database.
db=: sqlcreate_psqlite_ '~temp/sandp.db'
sqlopen
Open a database, returning database locale.
db=: sqlopen_psqlite_ '~addons/data/sqlite/db/sandp.db'
sqltables
Return tables in database (except for sqlite system tables). A non-empty string argument is used to return names that match.
sqltables__db'' βββ¬ββ¬βββ βpβsβspβ βββ΄ββ΄βββ sqltables__db 'p' βββ¬βββ βpβspβ βββ΄βββ
sqlviews
Return views in database. A non-empty string argument is used to return names that match.
sqlviews__db''
Table Definitions
sqlcols
Return column names in table.
sqlcols__db 's' βββββ¬βββββ¬βββββββ¬βββββ βsidβnameβstatusβcityβ βββββ΄βββββ΄βββββββ΄βββββ
sqlexist
Check if table exists.
sqlexist__db 'sp' 1 sqlexist__db 'spx' 0
sqlmeta
Return table information.
sqlmeta__db 'sp' βββββ¬βββββ¬βββββ¬ββββββββ¬βββββββββββ¬βββ βcidβnameβtypeβnotnullβdflt_valueβpkβ βββββΌβββββΌβββββΌββββββββΌβββββββββββΌβββ€ β0 βsid βtextβ0 βNULL β0 β β1 βpid βtextβ0 βNULL β0 β β2 βqty βint β0 βNULL β0 β βββββ΄βββββ΄βββββ΄ββββββββ΄βββββββββββ΄βββ
sqlname
Return database filename.
sqlname__db'' /home/elmo/j8/user/temp/sandp.db
sqlschema
Return table definition.
sqlschema__db 's' CREATE TABLE s (sid text primary key, name text, status int, city text);
sqlsize
Number of records in table.
sqlsize__db 'sp' 12
Table Reads
sqlread
This returns a pair: column names, list of column_values. Other reading functions call sqlread under the covers.
sqlread__db 's' ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ.. ββββββ¬βββββ¬βββββββ¬ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ¬ββββββββββββ.. ββsidβnameβstatusβcityβββββββ¬βββ¬βββ¬βββ¬βββββββββββ¬ββββββ¬ββββββ¬ββββββ¬βββββββ20 10 30 20 .. ββββββ΄βββββ΄βββββββ΄ββββββββs1βs2βs3βs4βs5βββsmithβjonesβblakeβclarkβadamsββ .. β ββββββ΄βββ΄βββ΄βββ΄βββββββββββ΄ββββββ΄ββββββ΄ββββββ΄βββββββ .. β βββββββββββββββββββ΄ββββββββββββββββββββββββββββββββ΄ββββββββββββ.. ββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ..
sqlreadm
This returns the data as matrix:
sqlreadm__db 's' ββββββββββββββββββββββββ¬βββββββββββββββββββββ ββββββ¬βββββ¬βββββββ¬ββββββββββ¬ββββββ¬βββ¬ββββββββ ββsidβnameβstatusβcityβββs1βsmithβ20βlondonββ ββββββ΄βββββ΄βββββββ΄ββββββββββΌββββββΌβββΌβββββββ€β β ββs2βjonesβ10βparis ββ β βββββΌββββββΌβββΌβββββββ€β β ββs3βblakeβ30βparis ββ β βββββΌββββββΌβββΌβββββββ€β β ββs4βclarkβ20βlondonββ β βββββΌββββββΌβββΌβββββββ€β β ββs5βadamsβ30βathensββ β βββββ΄ββββββ΄βββ΄ββββββββ ββββββββββββββββββββββββ΄βββββββββββββββββββββ
sqlreads
This returns a formatted display:
sqlreads__db 's' βββββ¬ββββββ¬βββββββ¬βββββββ βsidβname βstatusβcity β βββββΌββββββΌβββββββΌβββββββ€ βs1 βsmithβ20 βlondonβ βs2 βjonesβ10 βparis β βs3 βblakeβ30 βparis β βs4 βclarkβ20 βlondonβ βs5 βadamsβ30 βathensβ βββββ΄ββββββ΄βββββββ΄βββββββ
sqlhead/sqltail
These return the first/last x formatted records (default 10).
sqlhead__db 'sp' NB. first 10 records βββββ¬ββββ¬ββββ βsidβpidβqtyβ βββββΌββββΌββββ€ βs1 βp1 β300β βs1 βp2 β200β βs1 βp3 β400β βs1 βp4 β200β βs4 βp5 β100β βs1 βp6 β100β βs2 βp1 β300β βs2 βp2 β400β βs3 βp2 β200β βs4 βp2 β200β βββββ΄ββββ΄ββββ 5 sqltail__db 'sp' NB. last 5 records βββββ¬ββββ¬ββββ βsidβpidβqtyβ βββββΌββββΌββββ€ βs2 βp2 β400β βs3 βp2 β200β βs4 βp2 β200β βs4 βp4 β300β βs4 βp5 β400β βββββ΄ββββ΄ββββ
sqldict
This returns a dictionary:
sqldict__db 's' ββββββββ¬βββββββββββββββββββββββββββββββββββ βsid βββββ¬βββ¬βββ¬βββ¬βββ β β ββs1βs2βs3βs4βs5β β β βββββ΄βββ΄βββ΄βββ΄βββ β ββββββββΌβββββββββββββββββββββββββββββββββββ€ βname ββββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ β β ββsmithβjonesβblakeβclarkβadamsβ β β ββββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ β ββββββββΌβββββββββββββββββββββββββββββββββββ€ βstatusβ20 10 30 20 30 β ββββββββΌβββββββββββββββββββββββββββββββββββ€ βcity βββββββββ¬ββββββ¬ββββββ¬βββββββ¬ββββββββ β ββlondonβparisβparisβlondonβathensββ β βββββββββ΄ββββββ΄ββββββ΄βββββββ΄ββββββββ ββββββββ΄βββββββββββββββββββββββββββββββββββ
sqlexec
This returns the values only as a boxed list. A single column is opened.
sqlexec__db 's' ββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ¬βββββββββββββββ¬ββββββββββββββ.. βββββ¬βββ¬βββ¬βββ¬βββββββββββ¬ββββββ¬ββββββ¬ββββββ¬βββββββ20 10 30 20 30βββββββββ¬ββββββ¬.. ββs1βs2βs3βs4βs5βββsmithβjonesβblakeβclarkβadamsββ ββlondonβparisβ.. βββββ΄βββ΄βββ΄βββ΄βββββββββββ΄ββββββ΄ββββββ΄ββββββ΄βββββββ βββββββββ΄ββββββ΄.. ββββββββββββββββββ΄ββββββββββββββββββββββββββββββββ΄βββββββββββββββ΄ββββββββββββββ.. sqlexec__db 'name from s' βββββββ¬ββββββ¬ββββββ¬ββββββ¬ββββββ βsmithβjonesβblakeβclarkβadamsβ βββββββ΄ββββββ΄ββββββ΄ββββββ΄ββββββ
Table Write
sqlinsert
The argument is a table name, followed by a pair: column_names, column_values (the same format as the result of sqlread).
cls=: ;:'sid name status city' dat=: ('s6';'s7');('brown';'eaton');40 10;<'rome';'madrid' sqlinsert__db 's';cls;<dat
sqlupdate
The argument is a table name, a where statement, followed by a pair: column_names, column_values (as for sqlinsert).
sqlupdate__db 'p';'weight=12';('name';'city');<'hammer';'vienna'
sqlupsert
This is a variant of sqlinsert that updates existing records on given keys, and inserts any remaining records. The argument is a table name, list of keys, column_names and column_values:
cls=: ;:'sid name status city' dat=: ('s5';'s8');('adams';'scott');50 60;<'lisbon';'berlin' sqlupsert__db 's';'sid';cls;<dat
Parameterized Queries
sqlparm
This was added in v1.0.23.
A parametrized query is an ordinary SQL query that has one or more ? values, which are replaced by the data given. The data is in the form: types;values, where types are defined in the psqlite locale:
SQLITE_INTEGER=: 1 SQLITE_FLOAT=: 2 SQLITE_TEXT=: 3 SQLITE_BLOB=: 4
For example, an update using parameters:
sel=. 'update test set bfloat=? where aint=?' typ=. SQLITE_FLOAT_psqlite_,SQLITE_INTEGER_psqlite_ dat=. 123.45;75 sqlparm__locDB sel;typ;<dat
Note that the addon functions sqlinsert, sqlupdate, sqlupsert already use parameterized calls internally, so sqlparm is only needed for other types of queries.
Also, the only way to use blob values that contain ascii 0 is to use parameterized calls.
Meta Definitions
sqldebug
Set debug messages on/off.
sqldebug__db 1
sqlerror
Return last error message.
sqlerror__db '' unable to copy database ...
sqlite_extversion
Return sqlite extension version (major.minor):
sqlite_extversion_psqlite_'' 1.01
sqlite_info
Return sqlite info.
sqlite_info_psqlite_'' ββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β3.15.1β2016-11-04 12:08:49 1136863c76576110e710dd5d69ab6bf347c65e36β ββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
sqlreset
Reset sqlite, closing any open databases.
sqlreset_psqlite_''