Изменение строк в Rust
Запрос изменения меняет значения в уже лежащих строках. В тексте указывают, какие столбцы перезаписать, а условие ограничивает круг строк, как при выборке.
Переименуем пользователя с заданным ключом:
use rusqlite::{Connection, params};
fn rename(id: i64, label: &str) -> Result<(), rusqlite::Error> {
let conn = Connection::open("app.db")?;
let changed = conn.execute(
"UPDATE user SET name = ?1 WHERE id = ?2",
params![label, id],
)?;
println!("{}", changed);
Ok(())
}
fn main() {
match rename(1, "anna") {
Ok(()) => {}
Err(e) => println!("{}", e),
}
}
На экране число затронутых строк. Если
ключа нет, число будет 0, но
это не сбой библиотеки.
Несколько полей можно менять в одном запросе через запятую:
use rusqlite::{Connection, params};
fn fix_pair() -> Result<(), rusqlite::Error> {
let conn = Connection::open("app.db")?;
conn.execute(
"UPDATE user SET name = ?1 WHERE id = ?2",
params!["zoe", 2],
)?;
conn.execute(
"UPDATE user SET name = ?1 WHERE id = ?2",
params!["zack", 3],
)?;
Ok(())
}
fn main() {
match fix_pair() {
Ok(()) => println!("updated"),
Err(e) => println!("{}", e),
}
}
Дана таблица:
1 ann
Замените имя на amy для
id равного 1 и
выведите новое имя отдельной выборкой.
Дана таблица:
4 eve
5 fin
Поменяйте имя fin на fox
и выведите fox после чтения строки.
Скажите, что означает число, которое возвращает запрос изменения.