rusqlite returns 错误(无效参数计数(1、0))
rusqlite returns Err(InvalidParameterCount(1, 0))
我尝试用 rusqlite 执行一个简单的 sqlite 语句,但每次都会出错。
let seconds = 1;
conn.execute(
"DELETE FROM session WHERE created < DATETIME('now', '?1 seconds')",
params![seconds],
)?;
returns 一个 Err(InvalidParameterCount(1, 0))
.
如果我使用静态字符串而不是参数,则查询有效。例如
conn.execute(
"DELETE FROM session WHERE created < DATETIME('now', '1 seconds')",
params![seconds],
)?;
如何获取其中的参数?
您正在将 ?1
写在一个字符串中,这不是一个参数,而是一对普通的字符。因此,当您指定实际参数时,它不匹配,因为查询没有任何参数占位符。
你想要这样的东西(未经测试):
let seconds = 1;
conn.execute(
"DELETE FROM session WHERE created < DATETIME('now', ?1)",
params![format!("{} seconds", seconds)],
)?;
我尝试用 rusqlite 执行一个简单的 sqlite 语句,但每次都会出错。
let seconds = 1;
conn.execute(
"DELETE FROM session WHERE created < DATETIME('now', '?1 seconds')",
params![seconds],
)?;
returns 一个 Err(InvalidParameterCount(1, 0))
.
如果我使用静态字符串而不是参数,则查询有效。例如
conn.execute(
"DELETE FROM session WHERE created < DATETIME('now', '1 seconds')",
params![seconds],
)?;
如何获取其中的参数?
您正在将 ?1
写在一个字符串中,这不是一个参数,而是一对普通的字符。因此,当您指定实际参数时,它不匹配,因为查询没有任何参数占位符。
你想要这样的东西(未经测试):
let seconds = 1;
conn.execute(
"DELETE FROM session WHERE created < DATETIME('now', ?1)",
params![format!("{} seconds", seconds)],
)?;