@sqlite
The @sqlite module provides SQLite database access for persistent storage.
Import
import @sqlite
Functions
open()
(path string) -> Database
Opens or creates a SQLite database at the given path.
import @sqlite
do main() {
mut db = sqlite.open("app.db")
ensure sqlite.close(db)
// Use the database...
}
Parameters: path - Path to the database file. Created if it doesn’t exist.
Returns: Database - A database handle.
close()
(db Database)
Closes a database connection.
sqlite.close(db)
exec()
(db Database, sql string, ...params string)
Executes a SQL statement with optional parameters. Use ? placeholders for parameterized queries to prevent SQL injection.
import @sqlite
do main() {
mut db = sqlite.open("app.db")
ensure sqlite.close(db)
// Create table
sqlite.exec(db, "CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER)")
// Insert with parameters (prevents SQL injection)
sqlite.exec(db, "INSERT INTO users VALUES (?, ?)", "Alice", "30")
sqlite.exec(db, "INSERT INTO users VALUES (?, ?)", "Bob", "25")
}
Parameters:
db- Database handlesql- SQL statement...params- Optional parameters for?placeholders
query()
(db Database, sql string, ...params string) -> [map[string:string]]
Executes a parameterized SQL query and returns results as an array of row maps.
import @sqlite
do main() {
mut db = sqlite.open("app.db")
ensure sqlite.close(db)
// Query all users
mut rows = sqlite.query(db, "SELECT * FROM users")
for_each row in rows {
println("${row["name"]} is ${row["age"]} years old")
}
// Query with parameters
mut adults = sqlite.query(db, "SELECT * FROM users WHERE age > ?", "18")
println("Adults:", len(adults))
}
Parameters:
db- Database handlesql- SQL query...params- Optional parameters for?placeholders
Returns: [map[string:string]] - Array of row maps where keys are column names.
Example Program
import @sqlite
do main() {
mut db = sqlite.open("tasks.db")
ensure sqlite.close(db)
// Create table
sqlite.exec(db, "CREATE TABLE IF NOT EXISTS tasks (id INTEGER PRIMARY KEY, title TEXT, done INTEGER)")
// Insert tasks
sqlite.exec(db, "INSERT INTO tasks (title, done) VALUES (?, ?)", "Write docs", "0")
sqlite.exec(db, "INSERT INTO tasks (title, done) VALUES (?, ?)", "Fix bugs", "1")
sqlite.exec(db, "INSERT INTO tasks (title, done) VALUES (?, ?)", "Add tests", "0")
// Query incomplete tasks
mut pending = sqlite.query(db, "SELECT * FROM tasks WHERE done = ?", "0")
println("Pending tasks:")
for_each task in pending {
println(" - ${task["title"]}")
}
}