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.
// 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?
Consulta también