Consulta de Linhas
Nesta página
db.query(sql) executa um SELECT e retorna Result<[Any], DbError>. Faça
unwrap ou trate o erro; em caso de sucesso, o valor é uma lista de maps onde
cada chave é o nome de uma coluna. Você itera com for row in rows e acessa
campos como row.name, row.qty — sem mapeamento manual.
A lista suporta rows.len() e todos os métodos de coleção do Zolo (.each,
.filter, .map, etc.).
Seleciona itens ordenados por quantidade e imprime cada linha com campo direto no map de resultado.
03-query-rows.zolo
// Feature: Database — `db.query(sql)` returns a list of rows
// Syntax: each row is a `{col: value}` map; iterate with `for row in rows`.
// When to use: SELECT in general; Zolo serializes the result into maps.
use std::database::Database
let db = Database.open("sqlite://:memory:").unwrap()
defer db.close()
db.execute(sql"CREATE TABLE items (id INTEGER PRIMARY KEY, name TEXT, qty INTEGER)").unwrap()
db.execute(sql"INSERT INTO items VALUES (1, 'apple', 10)").unwrap()
db.execute(sql"INSERT INTO items VALUES (2, 'banana', 5)").unwrap()
db.execute(sql"INSERT INTO items VALUES (3, 'cherry', 20)").unwrap()
let rows = db.query(sql"SELECT * FROM items ORDER BY qty DESC").unwrap()
print("total: {rows.len()}")
// expected: total: 3
for row in rows {
print(" {row.id}: {row.name} x{row.qty}")
}
// expected:
// 3: cherry x20
// 1: apple x10
// 2: banana x5
Requer a CLI/host do Zolo — abra no playground ou rode localmente.
Desafio
Adicione um .filter na lista rows para exibir apenas os itens com qty > 8
sem alterar o SQL.
Veja também