Ошибка текста запроса в 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,
если запрос создания таблицы завершился
сбоем синтаксиса.