38 lines
1.3 KiB
Plaintext
38 lines
1.3 KiB
Plaintext
:sig
|
|
DValue sqlite_query(SQLite* db, String q)
|
|
DValue sqlite_query(SQLite* db, String q, StringMap params)
|
|
|
|
:params
|
|
db : pointer to an active SQLite connection
|
|
q : SQL statement
|
|
params : optional named parameter map
|
|
return value : list of result rows as a DValue
|
|
|
|
:see
|
|
>sqlite
|
|
sqlite_connect
|
|
sqlite_error
|
|
sqlite_insert_id
|
|
sqlite_affected_rows
|
|
0_DValue
|
|
|
|
:content
|
|
Executes one SQLite statement and returns result rows as a `DValue` array. Multi-statement SQL strings are rejected so migrations cannot silently run only their first statement.
|
|
|
|
Use named parameters with `:name` placeholders only. Positional `?` placeholders and SQLite's other named marker forms (`@name`, `$name`) are rejected so UCE SQLite queries use the same placeholder style as the MySQL helper. UCE binds parameters with SQLite prepared statements; it does not substitute values into the SQL string.
|
|
|
|
```cpp
|
|
SQLite* db = sqlite_connect("/tmp/app.sqlite");
|
|
|
|
StringMap params;
|
|
params["email"] = "ada@example.test";
|
|
DValue rows = sqlite_query(db,
|
|
"select id, email from users where email = :email",
|
|
params
|
|
);
|
|
```
|
|
|
|
Result rows are objects keyed by column name. SQLite integer, float, text, blob, and null values are converted to DValue values. Blob values are returned as byte strings.
|
|
|
|
For statements that do not return rows, inspect `sqlite_affected_rows()` or `sqlite_insert_id()` after the call.
|