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

Ошибка текста запроса в Rust

Движок проверяет текст запроса перед работой с данными. Опечатка в ключевом слове или имя несуществующей таблицы дают сбой в исходе, а не обрыв процесса на уровне языка.

Отправим испорченный запрос и напечатаем текст сбоя:

use rusqlite::Connection; fn bad_sql() -> Result<(), rusqlite::Error> { let conn = Connection::open("app.db")?; conn.execute("CREAT TABLE user (id INTEGER)", [])?; Ok(()) } fn main() { match bad_sql() { Ok(()) => println!("ok"), Err(e) => println!("{}", e), } }

Вместо ok на экране сообщение от библиотеки. Программа продолжает работу после печати.

Тот же прием годится для выборки из таблицы с неверным именем:

use rusqlite::Connection; fn main() { let conn = match Connection::open("app.db") { Ok(c) => c, Err(e) => { println!("{}", e); return; } }; match conn.prepare("SELECT name FROM users") { Ok(_) => println!("fine"), Err(e) => println!("{}", e), } }

Напишите запрос создания таблицы с опечаткой в ключевом слове и разберите сбой в main через сопоставление.

Дана таблица user. Попробуйте выбрать столбец title, которого нет, и выведите текст ошибки.

Скажите, изменится ли файл app.db, если запрос создания таблицы завершился сбоем синтаксиса.

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