Pular para o conteúdo

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
Playground
// 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.

Buscar no Zolo

9 resultados

enespt-br