Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpDbOn 217 of 288 menu
◀ ▶

Выборка одной строки в Rust

Когда нужна одна запись, используют запрос, который сразу возвращает строку или сбой. Пустой результат здесь не вариант успеха: библиотека сообщает, что строки не нашлось.

Прочитаем имя по первичному ключу:

use rusqlite::{Connection, params}; fn load_name(id: i64) -> Result<(), rusqlite::Error> { let conn = Connection::open("app.db")?; let name: String = conn.query_row( "SELECT name FROM user WHERE id = ?1", params![id], |row| row.get(0), )?; println!("{}", name); Ok(()) } fn main() { match load_name(1) { Ok(()) => {} Err(e) => println!("{}", e), } }

При наличии строки на экране ее имя. Если ключа нет, приходит сбой, его можно напечатать или обработать отдельной веткой.

Разберем отсутствие строки явно:

use rusqlite::{Connection, params}; fn main() { let conn = match Connection::open("app.db") { Ok(c) => c, Err(e) => { println!("{}", e); return; } }; match conn.query_row( "SELECT name FROM user WHERE id = ?1", params![999], |row| row.get::<_, String>(0), ) { Ok(name) => println!("{}", name), Err(e) => println!("missing {}", e), } }

Дана таблица:

5 iris

Прочитайте имя при id равном 5 одним запросом строки и выведите его.

Дана таблица user без строки с id 100. Попробуйте прочитать имя для этого ключа и выведите gone при сбое.

Скажите, чем ответ одной строки отличается от обхода нескольких строк при пустой таблице.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить