Вставка строки в Rust
Новую строку кладут запросом вставки: в тексте перечисляют столбцы, а значения передают отдельным списком. Так число и текст попадают в таблицу без ручной склейки фразы запроса.
Подготовим таблицу и добавим одну запись:
use rusqlite::{Connection, params};
fn add_user() -> Result<(), rusqlite::Error> {
let conn = Connection::open("app.db")?;
conn.execute(
"CREATE TABLE IF NOT EXISTS user (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
)",
[],
)?;
conn.execute(
"INSERT INTO user (id, name) VALUES (?1, ?2)",
params![1, "ann"],
)?;
Ok(())
}
fn main() {
match add_user() {
Ok(()) => println!("inserted"),
Err(e) => println!("{}", e),
}
}
На экране inserted. В таблице
теперь одна строка с ключом 1
и именем ann.
Несколько строк добавляют повторением того же запроса с другими значениями:
use rusqlite::{Connection, params};
fn seed() -> Result<(), rusqlite::Error> {
let conn = Connection::open("app.db")?;
conn.execute(
"INSERT INTO user (id, name) VALUES (?1, ?2)",
params![2, "bob"],
)?;
conn.execute(
"INSERT INTO user (id, name) VALUES (?1, ?2)",
params![3, "cara"],
)?;
Ok(())
}
fn main() {
match seed() {
Ok(()) => println!("two"),
Err(e) => println!("{}", e),
}
}
Дана таблица:
CREATE TABLE user (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Добавьте строку с id равным
10 и именем dan.
При успехе выведите dan.
Даны две строки для таблицы user:
4 eve
5 fin
Запишите обе строки двумя запросами
вставки и выведите pair при
успехе обоих.
Скажите, что произойдет при вставке
строки с тем же id, что уже
есть в таблице с первичным ключом.