Saltar al contenido

Consulta de Filas

En esta página

db.query(sql) ejecuta un SELECT y devuelve Result<[Any], DbError>. Haz unwrap o gestiona el error; en caso de éxito, el valor es una lista de maps donde cada clave es el nombre de una columna. Se itera con for row in rows y se accede a los campos como row.name, row.qty — sin mapeo manual.

La lista soporta rows.len() y todos los métodos de colección de Zolo (.each, .filter, .map, etc.).

Selecciona elementos ordenados por cantidad e imprime cada fila con acceso directo al campo en el 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

Requiere la CLI o el host de Zolo; ábrelo en el playground o ejecútalo localmente.

Desafío

Añade un .filter a la lista rows para mostrar solo los elementos con qty > 8 sin modificar el SQL.

Buscar en Zolo

9 resultados

enespt-br