renoise.SQLite
- Constants
- Functions
- Structs
- SQLiteDatabase
- Properties
- Functions
- close(self)
- prepare(self, sql :
string
) - Examples:
- finalize(self, temp_only :
boolean``?
) - execute(self, sql :
string
, fun : fun(data: any, cols: integer, values: table, names: table)?, data :any
) - Example:
- interrupt(self)
- busy_handler(self, fun : (udata :
any
, retries :integer
)->
boolean``?
, data :any
) - busy_timeout(self, t :
integer
) - nrows(self, sql :
string
) - rows(self, sql :
string
) - Example:
- urows(self, sql :
string
) - Example:
- Aliases
- SQLiteStatement
- Properties
- Functions
- name(self, n :
integer
) - value(self, n :
integer
) - type(self, n :
integer
) - finalize(self)
- reset(self)
- step(self)
- bind_parameter_count(self)
- bind_parameter_name(self, n :
any
) - bind(self, n :
integer
, value :boolean
|string
|number``?
) - bind_blob(self, n :
integer
, blob :string
) - bind_names(self, nametable : table<string|integer, boolean|string|number>)
- bind_values(self, ...
boolean
|string
|number
) - nrows(self)
- rows(self)
- urows(self)
- name(self, n :
- Aliases
- Aliases
Constants
Status
{ OK: integer = 0, ERROR: integer = 1, INTERNAL: integer = 2, PERM: integer = 3, ABORT: integer = 4, BUSY: integer = 5, LOCKED: integer = 6, NOMEM: integer = 7, READONLY: integer = 8, INTERRUPT: integer = 9, IOERR: integer = 10, CORRUPT: integer = 11, NOTFOUND: integer = 12, FULL: integer = 13, CANTOPEN: integer = 14, MISMATCH: integer = 20, MISUSE: integer = 21, NOLFS: integer = 22, FORMAT: integer = 24, RANGE: integer = 25, NOTADB: integer = 26, ROW: integer = 100, DONE: integer = 101, }
Functions
open(filename : string
?
, flags : SQLiteOpenFlags
| SQLiteOpenModes
?
)
->
SQLiteDatabase
?
, renoise.SQLite.Status
?
, string
?
Opens (or creates if it does not exist) a SQLite database either in memory or from the given file path.
Examples:
-- open an existing db in read-only mode. local db, status, error = renoise.SQLite.open('MyDatabase.sqlite', 'ro') if db then -- do some database calls... db:close() else -- handle error end -- open an in-memory db in read-write-create mode. local db, status, error = renoise.SQLite.open() if db then -- do some database calls... db:close() else -- handle error end
-- Configure database open mode. -- Default: "rwc" (read-write-create). -- Raw open mode flags from SQLite. -- See https://sqlite.org/c3ref/open.html#urifilenamesinsqlite3open flags: | "ro" | "rw" | "rwc"
Structs
SQLiteDatabase
Properties
is_open : boolean
READ-ONLY Whether or not the database is open.
is_closed : boolean
READ-ONLY Whether or not the database is closed.
error_code : renoise.SQLite.Status
READ-ONLY The most recent error code.
error_message : string
READ-ONLY The most recent error message.
changes : integer
READ-ONLY Number of database rows that were changed, inserted, or deleted by the most recent SQL statement. Only changes that are directly specified by INSERT, UPDATE, or DELETE statements are counted. Auxiliary changes caused by triggers are not counted. Use
db.total_changes
to find the total number of changes.
total_changes : integer
READ-ONLY The number of database rows that have been modified by INSERT, UPDATE or DELETE statements since the database was opened. This includes UPDATE, INSERT and DELETE statements executed as part of trigger programs. All changes are counted as soon as the statement that produces them is completed by calling either
stmt:reset()
orstmt:finalize()
.
last_insert_rowid : integer
READ-ONLY Gets the rowid of the most recent INSERT into the database. If no inserts have ever occurred, 0 is returned. (Each row in an SQLite table has a unique 64-bit signed integer key called the 'rowid'. This id is always available as an undeclared column named ROWID, OID, or ROWID. If the table has a column of type INTEGER PRIMARY KEY then that column is another alias for the rowid.)
If an INSERT occurs within a trigger, then the rowid of the inserted row is returned as long as the trigger is running. Once the trigger terminates, the value returned reverts to the last value inserted before the trigger fired.
Functions
close(self)
Closes a database. All SQL statements prepared using
db:prepare()
should have been finalized before this function is called.The function returns
renoise.SQLlite.Status.OK
on success or else a error code.
prepare(self, sql : string
)
->
SQLiteStatement
?
, renoise.SQLite.Status
, string
?
Compiles the SQL statement in string sql into an internal representation and returns this as userdata. The returned object should be used for all further method calls in connection with this specific SQL statement.
The function returns the statement object and
renoise.SQLlite.Status.OK
on success or else nil, an error code and the error message.Examples:
local statement, code, error = db:prepare("SELECT * from my_table") if statement then -- bind, step or do some queries else -- handle error end
See:
SQLiteStatement
finalize(self, temp_only : boolean
?
)
Finalizes all statements that have not been explicitly finalized.
execute(self, sql : string
, fun : fun(data: any, cols: integer, values: table, names: table)?, data : any
)
any
)->
renoise.SQLite.Status
, string
?
Compiles and executes the SQL statement(s) given in string sql. The statements are simply executed one after the other and not stored.
The function returns
renoise.SQLlite.Status.OK
on success or else an error code and the error message.If one or more of the SQL statements are queries, then the callback function specified in
fun
is invoked once for each row of the query result (iffun
isnil
, no callback is invoked).The callback receives four arguments:
data
(the third parameter of thedb:exec()
call), the number of columns in the row, a table with the column values and another table with the column names.The callback function should return
0
. If the callback returns a non-zero value then the query is aborted, all subsequent SQL statements are skipped anddb:exec()
returnssqlite.ABORT
.Example:
sql = [[ CREATE TABLE numbers(num1,num2,str); INSERT INTO numbers VALUES(1,11,"ABC"); INSERT INTO numbers VALUES(2,22,"DEF"); INSERT INTO numbers VALUES(3,33,"UVW"); INSERT INTO numbers VALUES(4,44,"XYZ"); SELECT * FROM numbers; ]] function show_row(udata,cols,values,names) assert(udata=='test_udata') print('exec:') for i=1,cols do print('',names[i],values[i]) end return 0 end db:execute(sql,show_row,'test_udata')
interrupt(self)
Causes any pending database operation to abort and return at the next opportunity.
busy_handler(self, fun : (udata : any
, retries : integer
) ->
boolean
?
, data : any
)
Sets or removes a busy handler for a SQLiteDatabase.
fun
is either a Lua function that implements the busy handler ornil
to remove a previously set handler. This function returns nothing. The handler function is called with two parameters:data
and the number of (re-)tries for a pending transaction. It should returnnil
,false
or0
if the transaction is to be aborted. All other values will result in another attempt to perform the transaction.(See the SQLite documentation for important hints about writing busy handlers.)
busy_timeout(self, t : integer
)
Sets a busy handler that waits for
t
milliseconds if a transaction cannot proceed. Calling this function will remove any busy handler set bydb:busy_handler()
; calling it with an argument less than or equal to 0 will turn off all busy handlers.
nrows(self, sql : string
)
->
() ->
table<string
, SQLiteValue
>?
Creates an iterator that returns the successive rows selected by the SQL statement given in string sql.
Each call to the iterator returns a table in which the named fields correspond to the columns in the database.
rows(self, sql : string
)
->
() ->
any
[]
Creates an iterator that returns the successive rows selected by the SQL statement given in string
sql
. Each call to the iterator returns a table in which the numerical indices 1 to n correspond to the selected columns 1 to n in the database.Example:
for a in db:rows('SELECT * FROM table') do for _,v in ipairs(a) do print(v) end end
urows(self, sql : string
)
->
() ->
SQLiteValue
?
Creates an iterator that returns the successive rows selected by the SQL statement given in string sql. Each call to the iterator returns the values that correspond to the columns in the currently selected row.
Example:
for num1,num2 in db:urows('SELECT * FROM table') do print(num1,num2) end
Aliases
SQLiteValue
SQLiteStatement
Precompiled SQLite statements, as created with
db:prepare()
.
Properties
is_open : boolean
READ-ONLY Whether or not the statement hasn't been finalized.
is_closed : boolean
READ-ONLY Whether or not the statement has been finalized.
columns : integer
READ-ONLY Number of columns in the result set returned by the statement, or 0 if the statement does not return data (for example an UPDATE).
last_insert_rowid : integer
READ-ONLY rowid of the most recent INSERT into the database corresponding to this statement.
named_types : table<string
, string
>
READ-ONLY A table with the names and types of all columns in the current result set of the statement.
named_values : table<string
, SQLiteValue
>
READ-ONLY A table with names and values of all columns in the current result row of a query.
names : string
[]
READ-ONLY A list of the names of all columns in the result set returned by the statement.
values : SQLiteValue
[]
READ-ONLY A list of the values of all columns in the result set returned by the statement.
types : string
[]
READ-ONLY A list of the types of all columns in the result set returned by the statement.
unames : string
[]
READ-ONLY A list of the names of all columns in the result set returned by the statement.
utypes : string
[]
READ-ONLY A list of the types of all columns in the result set returned by the statement.
uvalues : SQLiteValue
[]
READ-ONLY A list of the values of all columns in the current result row of a query.
Functions
name(self, n : integer
)
->
string
The name of column
n
in the result set of the statement. (The left-most column is number 0.)
value(self, n : integer
)
The value of column
n
in the result set of the statement. (The left-most column is number 0.)
type(self, n : integer
)
->
string
The type of column
n
in the result set of the statement. (The left-most column is number 0.)
finalize(self)
Frees a prepared statement.
If the statement was executed successfully, or not executed at all, then
renoise.SQLlite.Status.OK
is returned. If execution of the statement failed then an error code is returned.
reset(self)
Resets the statement so that it is ready to be re-executed. Any statement variables that had values bound to them using the
stmt:bind*()
functions retain their values.
step(self)
Evaluates the (next iteration of the) prepared statement. It will return one of the following values:
renoise.SQLite.Status.BUSY
: the engine was unable to acquire the locks needed. If the statement is a COMMIT or occurs outside of an explicit transaction, then you can retry the statement. If the statement is not a COMMIT and occurs within a explicit transaction then you should rollback the transaction before continuing.renoise.SQLite.Status.DONE
: the statement has finished executing successfully.stmt:step()
should not be called again on this statement without first callingstmt:reset()
to reset the virtual machine back to the initial state.renoise.SQLite.Status.ROW
: this is returned each time a new row of data is ready. The values may be accessed using the column access functions.stmt:step()
can be called again to retrieve the next row of data.renoise.SQLite.Status.ERROR
: a run-time error (e.g. a constraint violation) occurred.stmt:step()
should not be called again. More information may be found by callingdb:error_message()
. A more specific error code can be obtained by callingstmt:reset()
.renoise.SQLite.Status.MISUSE
: the function was called inappropriately. Perhaps because the statement has already been finalized or a previous call tostmt:step()
has returnedsqlite.ERROR
orsqlite.DONE
.
bind_parameter_count(self)
->
integer
Gets the largest statement parameter index in prepared statement stmt. When the statement parameters are of the forms ":AAA" or "?", then they are assigned sequentially increasing numbers beginning with one, so the value returned is the number of parameters. However if the same statement parameter name is used multiple times, each occurrence is given the same number, so the value returned is the number of unique statement parameter names.
If statement parameters of the form "?NNN" are used (where NNN is an integer) then there might be gaps in the numbering and the value returned by this interface is the index of the statement parameter with the largest index value.
bind_parameter_name(self, n : any
)
->
string
?
, renoise.SQLite.Status
Gets the name of the
n
-th parameter in prepared statement stmt. Statement parameters of the form ":AAA" or "@AAA" or "$VVV" have a name which is the string ":AAA" or "@AAA" or "$VVV". In other words, the initial ":" or "$" or "@" is included as part of the name. Parameters of the form "?" or "?NNN" have no name. The first bound parameter has an index of 1. If the valuen
is out of range or if then
-th parameter is nameless, then nil is returned.The function returns
renoise.SQLlite.Status.OK
on success or else a numerical error code. See:renoise.SQLite.Status
bind(self, n : integer
, value : boolean
| string
| number
?
)
Binds
value
to statement parametern
. Ifvalue
is a string, it is bound as text, otherwise if it is a number it is bound as a double. If it is a boolean, it is bound as 0 or 1. Ifvalue
is nil, any previous binding is removed.The function returns
renoise.SQLlite.Status.OK
on success or else a error code.
bind_blob(self, n : integer
, blob : string
)
Binds string
blob
(which can be a binary string) as a blob to statement parametern
.The function returns
renoise.SQLlite.Status.OK
on success or else a error code.
bind_names(self, nametable : table<string|integer, boolean|string|number>)
Binds the values in
nametable
to statement parameters.If the statement parameters are named (i.e., of the form ":AAA" or "$AAA") then this function looks for appropriately named fields in nametable; if the statement parameters are not named, it looks for numerical fields 1 to the number of statement parameters.
The function returns
renoise.SQLlite.Status.OK
on success or else a error code.
bind_values(self, ...boolean
| string
| number
)
Binds the given values to statement parameters.
The function returns
renoise.SQLlite.Status.OK
on success or else a error code. See:renoise.SQLite.Status
nrows(self)
->
() ->
table<string
, string
| integer
>?
Creates an iterator over the names and values of the result set of the statement. Each iteration returns a table with the names and values for the current row.
This is the prepared statement equivalent of
db:nrows()
. See:SQLiteDatabase.nrows
rows(self)
->
() ->
any
[]
Creates an iterator over the values of the result set of the statement. Each iteration returns an array with the values for the current row. This is the prepared statement equivalent of
db:rows()
. See:SQLiteDatabase.rows
urows(self)
Creates an iterator over the values of the result set of the statement. Each iteration returns the values for the current row. This is the prepared statement equivalent of
db:urows()
. See:SQLiteDatabase.urows
Aliases
SQLiteValue
Aliases
SQLiteOpenFlags
Raw open mode flags from SQLite. See https://sqlite.org/c3ref/open.html#urifilenamesinsqlite3open
SQLiteOpenModes
"ro"
| "rw"
| "rwc"
-- Configure database open mode. -- Default: "rwc" (read-write-create). SQLiteOpenModes: | "ro" | "rw" | "rwc"