#sqlite #rust #rusqlite
#sqlite #Ржавчина #rusqlite
Вопрос:
Я пытаюсь выполнить простой оператор sqlite с помощью rusqlite, но каждый раз получаю ошибку.
let seconds = 1;
conn.execute(
"DELETE FROM session WHERE created < DATETIME('now', '?1 seconds')",
params![seconds],
)?;
возвращает Err(InvalidParameterCount(1, 0))
.
Если я использую статическую строку вместо параметра, запрос работает. Например.
conn.execute(
"DELETE FROM session WHERE created < DATETIME('now', '1 seconds')",
params![seconds],
)?;
Как мне получить параметр там?
Ответ №1:
Вы пишете ?1
внутри строки, которая является не параметром, а обычной парой символов. Таким образом, когда вы указываете фактический параметр, он не соответствует, потому что в запросе нет никакого заполнителя параметра.
Вы хотите что-то вроде этого (непроверенное):
let seconds = 1;
conn.execute(
"DELETE FROM session WHERE created < DATETIME('now', ?1)",
params![format!("{} seconds", seconds)],
)?;