@sqlite
Import this module with import @sqlite.
SQLite database access for persistent storage.
| Function | Signature | Description |
|---|---|---|
open |
(path string) -> (Database, Error) |
Open or create a SQLite database |
close |
(db Database) |
Close database connection |
exec |
(db Database, sql string) -> (bool, Error) |
Execute a SQL statement (no rows returned) |
exec_params |
(db Database, sql string, params [string]) -> (bool, Error) |
Execute a parameterized SQL statement; bind values for ? placeholders |
query |
(db Database, sql string) -> ([map[string:string]], Error) |
Execute a SELECT query, returns array of row maps |
query_params |
(db Database, sql string, params [string]) -> ([map[string:string]], Error) |
Execute a parameterized SELECT query; bind values for ? placeholders |
open, exec, exec_params, query, and query_params are fallible: single-variable assignment is a compile-time error (E3089); the result must be destructured (mut v, err = ... or mut v, _ = ...).
For any user-supplied value, use exec_params or query_params with ? placeholders rather than interpolating into the SQL string; parameter binding prevents SQL injection.
import @sqlite
do main() { mut db, err = sqlite.open("myapp.db") if err != nil { println("open failed: ${err}") }
mut created, _ = sqlite.exec(db, "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)") mut inserted, _ = sqlite.exec(db, "INSERT INTO users (name) VALUES ('Alice')")
mut rows, query_err = sqlite.query(db, "SELECT * FROM users") if query_err != nil { println("query failed: ${query_err}") } for_each row in rows { println(row["name"]) }
sqlite.close(db)}