Saltar al contenido

DDL e Inserción

En esta página

db.execute(sql) sirve tanto para DDL (CREATE TABLE, DROP TABLE) como para DML que no devuelve filas (INSERT, UPDATE, DELETE). Devuelve Result<int, DbError> — haz unwrap o gestiona el error; en caso de éxito, el int es el número de filas afectadas, útil para confirmar que la operación produjo el efecto esperado.

Para DDL de varias líneas, usa el literal de bloque ```sql ... ``` — igual que un heredoc, pero con resaltado de sintaxis SQL en el editor.

Crea la tabla products, inserta tres filas y verifica el retorno de execute.

02-create-and-insert.zolo
Playground
// Feature: Database — `db.execute(sql)` for DDL and DML

// Syntax: `db.execute("...").unwrap()` — returns Result<int, DbError>;

//         the int is the number of affected rows.

// When to use: create schema, populate tables, any SQL that does not

// return rows.


use std::database::Database

let db = Database.open("sqlite://:memory:").unwrap()
defer db.close()

db.execute(```sql
  CREATE TABLE products (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    price REAL
  )
```).unwrap()

let inserted = db.execute("INSERT INTO products (id, name, price) VALUES (1, 'Widget', 9.99)").unwrap()
print("inserted: {inserted}")
// expected: inserted: 1


db.execute(sql"INSERT INTO products (id, name, price) VALUES (2, 'Gadget', 19.99)").unwrap()
db.execute(sql"INSERT INTO products (id, name, price) VALUES (3, 'Doohickey', 4.99)").unwrap()
print("3 products inserted")
// expected: 3 products inserted

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

Desafío

Añade un cuarto producto y luego ejecuta un UPDATE que cambie el precio de todos los elementos con price < 10. ¿Cuántas filas fueron afectadas?

Buscar en Zolo

9 resultados

enespt-br